简体   繁体   中英

how to get the child node value on attribute stax Java

I need guidance in STAX java I have xml file, I need to get the inner element value prior satisfying previous parent node book id attribute value. For example.

<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>

I need the values of attribute from "chap" element based on comparing on of the book attribute id.

Just hint would guide me.

You would need to do something along these lines

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);

From the "book" node, you can loop over the children ("chap" nodes). Or you can access the list of child nodes directly by:

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

You can then retrieve the attribute values from the "chap" nodes. (example, node.getTextContent(); )

Or if you know which chapter you want, modify the xpath expression to be more specific.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM