求助,想了一天,不知道怎么用dom4j读取多个同名子节点
假设XML文档节点如下<A>
<B>
<C>
<D>
</D>
</C>
</B>
<B>
<C>
<D>
</D>
</C>
</B>
</A>
我现在可以读取root A节点下的B中内容,但怎么才能读取每个D节点中的内容呢,我用遍历也只能读取第一各B中的节点D内容,每个B节点都一样,没有属性,其余D节点内容该如何读取,谢谢了 dom4j.org应该有很多例子吧。
对dom,jdom,dom4j不熟悉。
很久以前看过一篇关于dom的文章,好像dom是在内存中建parse的数,比较占内存?
实在不行试试用sax。 不明白楼主为什么要用遍历
DOM相对于SAX的好处就在于树状结构,可以通过element的名字直接取节点值,不用遍历下来那么麻烦
NodeList tagliste = docu.getElementsByTagName("D");
for(int i=0;i<tagliste.getLength();i++){
Node node = tagliste.item(i);
.......... 随便翻了下dom4j 网上的例子"Powerful Navigation with XPath"
List list = document.selectNodes( "//foo/bar" );
似乎就能满足需求啊,应该可以找到所有的B/C/D
另外感觉 apache 的digester很多情况下也是不错的,直接从xml生成相关的java object.
回复 #4 renzaijianghu 的帖子
digester不错的东东!在做web app的时候经常用来初始化bean。但是,
对普遍的xml处理,digester局限了。 原帖由 renzaijianghu 于 2007-12-1 18:54 发表 http://www.dolc.de/forum/images/common/back.gif
随便翻了下dom4j 网上的例子"Powerful Navigation with XPath"
List list = document.selectNodes( "//foo/bar" );
似乎就能满足需求啊,应该可以找到所有的B/C/D
另外感觉 apache 的digester很多情况下也是 ...
我i用过这个命令,但不知道为什么读出来的都是第一个B下的所有D节点,再往下就读不了了 问题解决了$汗$ 谢谢楼上各位
List list = doc.selectNodes("/scpd/actionList/action");
List list2 = doc.selectNodes("/scpd/actionList/action/argumentList/argument");
// Node root3 = doc.selectSingleNode("/scpd/actionList");
Iterator iter=list.iterator();
Iterator iter2=list2.iterator();
while (iter.hasNext())
{
Element element=(Element)iter.next();
System.out.println(element.element("name").getText()+"\t");
while(iter2.hasNext())
{
Element element2=(Element)iter2.next();
System.out.println(element2.element("name").getText());
System.out.println(element2.element("direction").getText());
System.out.println(element2.element("relatedStateVariable").getText());
}
页:
[1]