使用SAX xerces解析xml时加载java对象

时间:2011-12-06 03:56:42

标签: java xerces

如果我的xml看起来像:

<root version="1.1">
  <node number="1">
    <url>http://....</url>
  </node>
  <url>http://...</url>
</root>

现在在我的endElement事件中,我查看xml元素是否以'url'开头,但是我怎么知道url元素何时是node元素内的url元素以及何时不是吗?

public void endElement(String uri, String localName, String qName, Attributes attributes) {
  if(qName.equals("url")) {
    someObject.setUrl(characters);
  }
}

1 个答案:

答案 0 :(得分:2)

一种方法是通过维护一堆元素名称或使用一个表明你在子树内的标志来跟踪“看到”的元素。

第一种方式:在startElement中推送堆栈上的元素名称,然后在endElement中将名称弹出堆栈。当你在endElement中看到“url”时,检查堆栈上是否有“node”。

另一种方法:在startElement中设置nodeElementSeen = true,然后在endElement中设置nodeElementSeen = false。当您在endElement中看到“url”时,请检查nodeElementSeen = true。