java使用dom4j解析xml
xml文件
<?xml version="1.0" encoding="utf-8"?>
<node>
<updated>2009-11-25 09:06:11</updated>
<entry>
<link href="http://xx/initline/detail/1628 " time="2009-11-25 09:06:11"/>
</entry>
<entry>
<link href="http://xx/initline/detail/1634 " time="2009-11-25 09:06:11"/>
</entry>
<entry>
<link href="http://xx/initline/detail/1636 " time="2009-11-25 09:06:11"/>
</entry>
</node>
解析xml获取属性
SAXReader reader = new SAXReader(); //初始化
Document doc = reader.read(url); //read可以是String类型的xml,可以是File或InputStream,也可以是url远程地址
Node node = doc.selectSingleNode("/node"); //这里根节点是/,其下子节点是node selectSingleNode代表只选取一个节点
List list = root.selectNodes("entry/link"); //这里会选择多个节点
for (Object o : list) {
Element e = (Element) o;
String link = e.attributeValue("href"); // 获取属性内容
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<node>
<updated>2009-11-25 09:13:09</updated>
<uri>1628</uri>
<domain>http://xx</domain>
<type>line</type>
<title><![CDATA[上海到连云港、黄金海岸二日游]]></title>
<lid><![CDATA[1628]]></lid>
<startdest><![CDATA[上海]]></startdest>
<startgui><![CDATA[ascn23]]></startgui>
<outdays type="cypress.num">2</outdays>
<created><![CDATA[1224831808]]></created>
<changed><![CDATA[1258004282]]></changed>
</node>
解析xml获取值内容
SAXReader reader = new SAXReader();
Document doc = reader.read(strxml);
Node root = doc.selectSingleNode("/node");
String uid = root.selectSingleNode("title").getText(); //获取值内容,这里可以选择某个节点去获得值内容
另一种解析方式
Element root = doc.getRootElement();
System.out.println("root:" + root.getName()); //这里打印出的就是根node,根没有值
for(Iterator it = root.elementIterator(); it.hasNext(); ) { //迭代根元素
Element e = (Element) it.next();
System.out.println(e.getName() + " " + e.getText()); //获取名和值
}
生成xml
Document document = DocumentHelper.createDocument(); // 先生成Document对象
Element resume= document.addElement("resume"); //根节点
Element baseinfo= resume.addElement("baseinfo"); //一级子节点
Element name = baseinfo.addElement("name"); //二级子节点
name.setText("hepeng"); //节点值内容
Element sex = baseinfo.addElement("sex");
sex.setText("m");
Element age = baseinfo.addElement("age");
age.setText("23);
Writer fileWriter = new FileWriter(fileName); //写入文件
XMLWriter xmlWriter = new XMLWriter(fileWriter); //写入文件
xmlWriter.write(document); //写
xmlWriter.close();
生成的xml结果
<resume>
<baseinfo>
<name>hepeng<name>
<sex>m</sex>
<age>23</age>
</baseinfo>
</resume>
修改xml某项
使用setText()修改,最后使用XMLWriter打开xml文件,并writer该doc对象,关闭即可。
php使用SimpleXMLElement解析xml