2009年7月25日 星期六

jdom xpath java解析xml的套件 demo 2


catalog.xml

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<composition composer="cc">www
<station ci="11">
<address>tw</address>
</station>
<station ci="10">
<address>jp</address>
</station>
<title>Trio for Flute, Viola and Harp</title>
</composition>

<composition composer="c2">
<station ci="15">
<address>am</address>
</station>

<title>Charmonium</title>
</composition>
</catalog>


import java.io.*;
import java.util.*;

import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import org.jdom.xpath.*;

public class XPathReader {

public static void main(String[] args) throws IOException {
PrintStream out = System.out;
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("catalog.xml"));
XPath Path = XPath.newInstance("//composition/station");
List list = Path.selectNodes(doc);
Iterator i = list.iterator();
int j = 1;
while (i.hasNext()) {
Element el = (Element) i.next();
if (el != null) {
//列印//composition/station[@ci]
out.println(j+" "+ el.getAttribute("ci"));

//列印composition/station/address
out.println(j+" "+ el.getChildText("address"));

//尋找父元素
out.println(j+" "+ el.getParentElement().getTextTrim());
}
j++;
}

} catch (JDOMException e) {
e.printStackTrace();
}
}
}

/* result
1 [Attribute: ci="11"]
1 tw
1 www
2 [Attribute: ci="10"]
2 jp
2 www
3 [Attribute: ci="15"]
3 am
3
*/

延伸閱讀
http://www.ibm.com/developerworks/cn/xml/x-jdom/

http://www.java3z.com/cwbwebhome/article/article2/2282.html?id=810

沒有留言: