xml源文件:
<?xml version="1.0" encoding="utf-8"?>
<contactList>
<contact id="001" name="aa1" ss="22">
<name>张三</name>
<age>20</age>
<phone>134222223333</phone>
<email>zhangsan@qq.com</email>
<qq>432221111</qq>
</contact>
<contact id="003">
<name>lisi</name>
<age>20</age>
<phone>134222225555</phone>
<email>lisi@qq.com</email>
<qq>432222222</qq>
</contact>
</contactList>
读取xml文档,返回Document
SAXReader read = new SAXReader();
Document doc = read.read(new File("./src/contact.xml"));//返回Document对象
1.获取节点
a.)将获取的节点便利输出:
Iterator<Node> inter = doc.nodeIterator();//获取节点
while(inter.hasNext()){//判断是否有下一个元素
Node node=inter.next();
String name = node.getName();
System.out.println(name);//打印出节点名称
}
b.)获取该标签节点下的子节点:
if(node instanceof Element){//判断是否有子节点
Element ele = (Element)node;
Iterator <Node> ite = ele.nodeIterator();
while(ite.hasNext()){
Node nod=ite.next();//打印出子节点名称
System.out.println(nod.getName());
}
}
c.)获取所有节点:
Element ele = dor.getRootElement();//获取根节点
getChildNode(ele);//调用方法
//获取所有子节点的方法并打印
private void getChildNode(Element elem){
System.out.println(elem.getName());//输出节点
Iterator <Node> it= elem.nodeIterator();
while(it.hasNext()){
Node node = it.next();
if(node instanceof Element){
Element el = (Element)node;
getChildNode(el);//递归
}
}
}
2.获取标签
a.)先得到根标签:
Element rootele =doc.getRootElement();//得到根标签
String name = rootele.getName();
System.out.println(name);
b.)得到当前标签下的指定名称的子标签:
Element contele= rootele.element("contact");//得到当前标签下的指定名称的子标签
System.out.println(contele.getName());
c.)获得当前标签下指定名称的所有子标签:
Iterator<Element> it=rootele.elementIterator("contact");//获得当前标签下指定名称的所有子标签
while(it.hasNext()){
Element elem = it.next();
System.out.println(elem.getName());
}
3.获取属性
a.)先获得属性所在的标签对象:
//获得属性,先获得属性所在的标签对象,然后获取属性
Element contele =doc.getRootElement().element("contact");
b.)得到指定名称属性值
方法一:
//得到属性
//得到指定名称属性值
String IDValue= contele.attributeValue("id");
System.out.println(IDValue);
方法二:
//得到指定属性名称的属性对象和属性值
Attribute attr = contele.attribute("id");
System.out.println(attr.getName()+"="+attr.getValue());
c.)得到指定名称的所有属性值
方法一:
//获取当前标签所有的属性对象和属性值
List<Attribute> list= contele.attributes();
for(Attribute arr:list){
System.out.println(arr.getName()+"="+arr.getValue());
}
方法二:
//获取当前标签所有的属性对象和属性值
Iterator<Attribute> it= contele.attributeIterator();
while(it.hasNext()){
Attribute aa= it.next();
System.out.println(aa.getName()+"="+aa.getValue());
}
4.获取文本
a.)先获取文本标签:
//获取文本(先获取文本标点,在获取文本内容)
Element neamEle = doc.getRootElement().element("contact").element("name");
b.)获取文本内容:
//得到文本内容
String nameText = neamEle.getText();
System.out.println(nameText);
c.)得到指定标签名的文本内容:
//得到指定标签名的文本内容
String text2= doc.getRootElement().element("contact").elementText("name");
System.out.println(text2);