顯示具有 xpath 標籤的文章。 顯示所有文章
顯示具有 xpath 標籤的文章。 顯示所有文章

2009年7月25日 星期六

jdom xpath java解析xml的套件 demo 3




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

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

/*

phone.xml

<?xml version="1.0" encoding="UTF-8"?>
<friends comment="Friends List">
<friend number="1">
<name>張三</name>
<sex value="male" />
<phone type="home">02-55556666</phone>
<phone type="mobile">0931555645</phone>
</friend>
<friend number="2">
<name>李四</name>
<sex value="male" />
<phone type="home">02-36541234</phone>
<phone type="mobile">0932333666</phone>
</friend>
<friend number="3">
<name>王五</name>
<sex value="female" />
<phone type="home">02-80213698</phone>
<phone type="mobile">0939222333</phone>
</friend>
</friends>
*/
public class XPathReader {

public static void main(String[] args) throws IOException {
PrintStream out = System.out;
String name = null;
String sex = null;
String phone_home = null;
String phone_mobile = null;
String s = null;
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("phone.xml"));
Element root = doc.getRootElement();
List list = XPath.selectNodes(root,"/friends/friend");
Iterator i = list.iterator();
int j = 1;
while (i.hasNext()) {
Element element = (Element) i.next();
String number = element.getAttributeValue("number");
name = ( (Text) XPath.selectSingleNode(element,"//friend[@number='" + number + "']/name/text()")).getTextNormalize();
sex = ( (Element) XPath.selectSingleNode(element,"//friend[@number='" + number + "']/sex")).getAttributeValue("value");
phone_home =( (Text) XPath.selectSingleNode(element,"//friend[@number='" + number + "']/phone[@type='home']/text()")).getText();
phone_mobile =( (Text) XPath.selectSingleNode(element,"//friend[@number='" + number + "']/phone[@type='mobile']/text()")).getText();
s = "name "+name+",sex "+sex+",phone_home "+phone_home+",phone_mobile "+phone_mobile;
out.println(s);
}

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

/* result
name 張三,sex male,phone_home 02-55556666,phone_mobile 0931555645
name 李四,sex male,phone_home 02-36541234,phone_mobile 0932333666
name 王五,sex female,phone_home 02-80213698,phone_mobile 0939222333
*/

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

2009年7月24日 星期五

jdom xpath java解析xml的套件

web.xml檔案內容


http://www.jdom.org/downloads/index.html
下載JDOM 1.1 is the latest release build.

jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar
xalan.jar
xerces.jar
xml-apis.jar

import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public static void main(String[] args) throws Exception {
String file = "test.xml";
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File(file));
XPath servletPath = XPath.newInstance("//servlet");
// services/service[@type='interval']
List servlets = servletPath.selectNodes(doc);
Iterator i = servlets.iterator();
while (i.hasNext()) {
Element servlet = (Element) i.next();
String s = servlet.getChild("servlet-name").getTextTrim();// ok
System.out.println("w " + sdate);
}
}
------------------------
result
servlet-name => snoop
servlet-name => file