Как получить w: t-контент, предоставляемый aw: p child в xml, используя xpath

1

Мне нужно проверить, есть ли в нем w: t тег w: t. w: p может иметь w: r, w: гиперссылка, w: fldSimple и т.д. как дети

<w:r>
   <w:t>
   a link 
   <w:t/>
</w:r>
<w:hyperlink r:id="rId4">
   <w:r>
      <w:rPr>
         <w:rStyle w:val="Hyperlink"/>
      </w:rPr>
      <w:t>Google</w:t>
   </w:r>
</w:hyperlink>

если дочерний элемент w: p равен w: r, то он будет иметь тег w: t сразу на следующем уровне, но если дочерний элемент w: p является w: гиперссылкой, тогда w: t не будет иметь непосредственного ребенка из w: гиперссылки.

Запрос x: path, который я написал,

Node tNode = (Node) xPath.evaluate("//t", pChildNode, XPathConstants.NODE);

где pChildNode может w: r, w: гиперссылка или любые другие допустимые дети w: p

Но этот запрос xpath не получает меня w: t node из дочерних элементов w: p

Теги:
xpath
openxml
domparser

1 ответ

0
Лучший ответ

Вы не использовали пространства имен.

Node tNode = (Node) xPath.evaluate("//w:t", pChildNode, XPathConstants.NODE);

Прежде чем выполнять это, вы должны привязать правильное пространство имен с помощью NamespaceContext:

xpath.setNamespaceContext(new NamespaceContext() {
    @Override
    public Iterator getPrefixes(String arg0) {
        return null;
    }

    @Override
    public String getPrefix(String arg0) {
        return null;
    }

    @Override
    public String getNamespaceURI(String arg0) {
        if("w".equals(arg0)) {
            return "YOUR-NAMESPACE";
        }
        return null;
    }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню