如何在属性 stax Java 上获取子节点值



我需要STAX java中的指导,我有xml文件,我需要在满足以前的父节点book id属性值之前获取内部元素值。例如。

<books>
<book id = "1">
   <chap num ="1"> This First Title </chap>
   <chap num ="2"> This second of first book </chap>
</book>
<book id = "2">
   <chap num ="1"> This First Title of second book </chap>
   <chap num = "2"> This Second of second book </chap>
</book>
</books>

我需要基于书籍属性 ID 的比较来从"chap"元素中提取属性值。

只是提示会指导我。

你需要按照这些思路做一些事情

String xmlString = ...
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xmlString);
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
String xpathExp = "/books/book[@id="2"]";
Node node = (Node) xpath.evaluate(xpathExp, doc, XPathConstants.NODE);
从"book"节点

,您可以遍历子节点("chap"节点)。或者,您可以通过以下方式直接访问子节点列表:

String xpathExp = "/books/book[@id="2"]/chap";
NodeList chapNodeList = (NodeList) xpath.evaluate(xpathExp, doc, XPathConstants.NODESET);

然后,您可以从"chap"节点检索属性值。(例如,node.getTextContent();

或者,如果您知道需要哪一章,请修改 xpath 表达式以使其更具体。

最新更新