Мне нужно проверить, есть ли в нем 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
Вы не использовали пространства имен.
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;
}
});