繁体   English   中英

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

[英]how to get the child node value on attribute stax Java

我需要STAX Java中的指导,我有xml文件,需要在满足先前的父节点本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的比较来确定“章”元素中的属性值。

只是提示会指导我。

您需要按照以下方式做一些事情

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

在“书”节点上,您可以遍历子级(“章”节点)。 或者,您可以通过以下方式直接访问子节点列表:

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

然后,您可以从“章”节点中检索属性值。 (例如, node.getTextContent();

或者,如果知道所需的章节,请修改xpath表达式以使其更具体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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