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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top