从java中的XML获取孙子
问题描述:
我需要将xml文件的内容打印到某个txt文件中。下面是XML类型的样品,我想打印出:从java中的XML获取孙子
<log>
<logentry revision="234">
<author>SOMEGUY</author>
<date>SOME DATE</date>
<paths>
<path>asdf/asdf/adsf/asdf.zip</path>
</path>
<msg>blahblahblah</msg>
</logentry>
</log>
我能得到我所需要的,除了路径标签的所有信息......这是我做了什么:
FileWriter fstream = new FileWriter("c:\\work\\output.txt");
BufferedWriter out = new BufferedWriter(fstream);
Document document = (Document) builder.build(xmlFile);
Element rootNode = document.getRootElement();
List list = rootNode.getChildren("logentry");
for (int i=0; i< list.size(); i++) {
Element node = (Element) list.get(i);
out.write("Revision: \n" + node.getAttributeValue("revision") + "\n\n");
out.write("Author: \n" + node.getChildText("author") + "\n\n");
out.write("Date: \n" + node.getChildText("date") + "\n\n");
out.write("Message: \n" + node.getChildText("msg"));
out.write("\n-------------------------------------------------"
+"---------------------------------------------------\n\n");
}
out.close();
那么,我如何从这个标签获取信息?
P.S.随意downvote被遗忘这一点,如果这是一个愚蠢的问题...只要你也可直接向我的答案:)
感谢
答
您可以遍历paths
孩子:
...
List pathsChilds = node.getChildren("paths");
if(pathsChilds.size() > 0){
Element paths = (Element) pathsChilds.get(0);
List pathChilds = paths.getChildren("path");
for (int j=0; j< pathChilds.size(); j++) {
Element path = (Element) pathChilds.get(j);
out.write("Path: \n" + path.getText() + "\n\n");
}
}
答
使用getElementsByTagName()
得到<paths>
标记,然后用它来获得它的孩子。
哦,这是为w3c元素。对于JDOM元素,请使用getChild()
和getChildren()
。
你绑JDOM?你有没有考虑XPath是否适合解决你的问题? – 2011-06-09 20:06:48