两个jar包:1.dom4j和jaxen
1.查询
XML文件:
<?xml version="1.0"?>
<class>
<student rollno="393">
<firstname>dinkar</firstname>
<lastname>kad</lastname>
<nickname>dinkar</nickname>
<marks>85</marks>
</student>
<student rollno="493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>vinni</nickname>
<marks>95</marks>
</student>
<student rollno="593">
<firstname>jasvir</firstname>
<lastname>singn</lastname>
<nickname>jazz</nickname>
<marks>90</marks>
</student>
</class>
代码部分:
package com.xml.dom4j;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4j {
/**
* @param args
* @throws DocumentException
*/
public static void main(String[] args) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read("C:\\Users\\hp\\workspace\\MyTexst\\book.xml");
System.out.println("Root element:"+document.getRootElement().getName());
Element classElement = document.getRootElement();
@SuppressWarnings("unchecked")
List<org.dom4j.Node> nodes = document.selectNodes("/class/student[@rollno='493']");
System.out.println("-------------------------------------");
for(org.dom4j.Node node :nodes){
System.out.println("Element name:"+node.getName());
System.out.println("rollno:"+node.valueOf("@rollno"));
System.out.println("FirstName:"+node.selectSingleNode("firstname").getText());
System.out.println("LastName:"+node.selectSingleNode("lastname").getText());
System.out.println("NickName:"+node.selectSingleNode("nickname").getText());
System.out.println("Marks:"+node.selectSingleNode("marks").getText());
}
}
}
运行结果:
Root element:class
-------------------------------------
Element name:student
rollno:493
FirstName:Vaneet
LastName:Gupta
NickName:vinni
Marks:95
2.创建
要创建的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<cars>
<supercars company="Ferrai">
<carname type="Ferrai 101">Ferrai101</carname>
<carname type="sports">Ferrai 202</carname>
</supercars>
</cars>
代码:
package com.xml.dom4j;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class DOM4JCreateXMLDemo {
/**
* @param args
*/
public static void main(String[] args) {
try {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("cars");
Element supercarElement = root.addElement("supercars")
.addAttribute("company", "Ferrai");
supercarElement.addElement("carname")
.addAttribute("type", "Ferrai 101")
.addText("Ferrai101");
supercarElement.addElement("carname")
.addAttribute("type", "sports")
.addText("Ferrai 202");
//这里是打印在控制台了的说
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer;
writer = new XMLWriter(System.out, format);
writer.write(document);
} catch (Exception e) {
// TODO: handle exception
}
}
}
打印在控制台的结果:
<?xml version="1.0" encoding="UTF-8"?>
<cars>
<supercars company="Ferrai">
<carname type="Ferrai 101">Ferrai101</carname>
<carname type="sports">Ferrai 202</carname>
</supercars>
</cars>
3.修改XML
修改的XML文件:
<?xml version="1.0"?>
<class>
<student rollno="393">
<firstname>dinkar</firstname>
<lastname>kad</lastname>
<nickname>dinkar</nickname>
<marks>85</marks>
</student>
<student rollno="493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>vinni</nickname>
<marks>95</marks>
</student>
<student rollno="593">
<firstname>jasvir</firstname>
<lastname>singn</lastname>
<nickname>jazz</nickname>
<marks>90</marks>
</student>
</class>
代码:
package com.xml.dom4j;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class DOM4JModifyXMLDemo {
/**
* @param args
* @throws DocumentException
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws DocumentException, Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("C:\\Users\\hp\\workspace\\MyTexst\\book.xml");
Element classElement = document.getRootElement();
List<Node> nodes = document.selectNodes("/class/student[@rollno='493']");
for(Node node:nodes){
Element element = (Element) node;
Iterator iterator = element.elementIterator("marks");
while(iterator.hasNext()){
Element marksElement = (Element) iterator.next();
marksElement.setText("8000");
}
}
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer;
writer = new XMLWriter(System.out,format);
writer.write(document);
}
}
控制台打印结果:
<?xml version="1.0" encoding="UTF-8"?>
<class>
<student rollno="393">
<firstname>dinkar</firstname>
<lastname>kad</lastname>
<nickname>dinkar</nickname>
<marks>85</marks>
</student>
<student rollno="493">
<firstname>Vaneet</firstname>
<lastname>Gupta</lastname>
<nickname>vinni</nickname>
<marks>8000</marks>
</student>
<student rollno="593">
<firstname>jasvir</firstname>
<lastname>singn</lastname>
<nickname>jazz</nickname>
<marks>90</marks>
</student>
</class>