使用Java DOM Parser解析具有复杂结构的xml文件中的子元素

时间:2011-09-17 07:44:23

标签: java xml dom

我必须解析具有复杂结构的XML文件 -

以下是结构的一部分的简要概述 -

“PA”-----------顶级组元素,包含ar,pars,paes和另外一个元素......

---“ar”组元素 - 由reel-no,frame-no,last-update-date,purge-indicator,录制日期,页数,通讯员,传送文本组成。在“ar”中,我们需要“last-update-date”和“录制日期”

---“pars”组元素 - 由一个或多个“pr”元素组成.--“pr”是由name和execution-date组成的组元素。

注意,从上面看,单个根记录中可能有一个或多个“pr”元素,并且关系是root或PA - > pars - >一个或多个pr元素。

现在我已经使用以下代码导航到单个根元素(即PA的元素)---

//get a nodelist of  elements
 NodeList nl = docEle.getElementsByTagName("PA");
 if(nl != null && nl.getLength() > 0) {
 for(int i = 0 ; i < nl.getLength();i++) {
    //get the PA element
Element el = (Element)nl.item(i);
    //now add code so as to obtain a node list of "pr" elements.
    }

是否可以解析上面获得的单个元素(将该元素本身视为复杂的xml结构),以便获得“pr”元素的节点列表?我已经有一个“PA”元素(其中“pr”元素的节点列表应该是)。供您参考,“PA”和“pr”之间的确切关系是root或PA - &gt; pars - &gt;一个或多个pr元素。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用XPath,例如,如果您输入类似这样的内容而不是“添加代码”注释:

XPath xpath = XPathFactory.newInstance().newXPath();            
NodeList list=(NodeList) xpath.evaluate("pars/pr", el, XPathConstants.NODESET);

这应该会为您提供当前prpars个节点的所有PA个节点的列表。