使用dom4j和XPath解析XML之例子一
2010-03-29 09:36
549 查看
http://blog.csdn.net/antswallow
包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类),
TestDom4jReadExmple.java(测试解析的结果) (由于使用csdn
blog自带的代码粘贴工具会朝里加入一些"..."字符,虽然利于查看,但是不利于把代码copy出来运行,而亲自运行代码对程序员来说是很重要的,故
没有使用csdn blog自带的代码粘贴工具来插入代码,而是用着用直白的方式):
studentInfo.xml
<?xml version="1.0" encoding="gb2312"?>
<students>
<student age="25"><!--如果没有age属性,默认的为20-->
<name>崔卫兵</name>
<college>PC学院</college>
<telephone>62354666</telephone>
<notes>男,1982年生,硕士,现就读于北京邮电大学</notes>
</student>
<student>
<name>cwb</name>
<college
leader="leader1">PC学院</college><!--如果没有leader属性,默认的为
leader-->
<telephone>62358888</telephone>
<notes>男,1987年生,硕士,现就读于中国农业大学</notes>
</student>
<student age="45">
<name>xxxxx</name>
<college
leader="">xxx学院</college>
<telephone>66666666</telephone>
<notes>注视中,注释中</notes>
</student>
<student age="">
<name>yyyyyy</name>
<college leader="学院领导">yyyy学院</college>
<telephone>88888888</telephone>
<notes>注视中111,注释中222</notes>
</student>
</students>
Dom4jReadExmple.java
package dom4jExample.read;
import java.io.File;
import java.util.HashMap;
import
java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import
org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*
利用dom4j与XPath进行XML编程
* @author cuiweibing
* @since 2007.8.10
*/
public
class Dom4jReadExmple {
/**
* 利用XPath操作XML文件,打印指定节点或者属性的值
* @param filename String 待操作的XML文件(相对路径或者绝对路径)
*/
public void
printSelectedNodeValue(String filename){
try {
SAXReader
saxReader = new SAXReader();
Document document =
saxReader.read(new File(filename));
//打印所有student节点的属性age值,如果有的话
List
list = document.selectNodes("/students/student/@age
");
Iterator
iter = list.iterator();
while (iter.hasNext()) {
Attribute
attribute = (Attribute) iter.next();
System.out.println("/students/student/@age
:"+attribute.getValue());
}
//打印所有college节点值,如果有的话
list =
document.selectNodes("/students/student");
iter = list.iterator();
while
(iter.hasNext()) {
Element bookElement = (Element) iter.next();
Iterator
iterator = bookElement.elementIterator("college");
while
(iterator.hasNext()) {
Element titleElement = (Element)
iterator.next();
System.out.println("/students/student
/college:"+titleElement.getText());
}
}
//测试节点的一些方法
list
= document.selectNodes("//telephone");
iter = list.iterator();
while
(iter.hasNext()) {
Element titleElement = (Element)
iter.next();
System.out.print("//telephone:getName:"+titleElement.getName());
System.out.print("
##getNodeType:"+titleElement.getNodeType());
System.out.print("
##getTextTrim:"+titleElement.getTextTrim());
System.out.print("
##getNamespaceURI:"+titleElement.getNamespaceURI());
System.out.print("
##getNodeTypeName:"+titleElement.getNodeTypeName());
System.out.print("
##getQualifiedName:"+titleElement.getQualifiedName());
System.out.print("
##getUniquePath:"+titleElement.getUniquePath());
System.out.println("
##getPath:"+titleElement.getPath());
}
//打印所有name节点值,如果有的话,
与上面college的取法不一样
list =
document.selectNodes("/students/student/name");
iter =
list.iterator();
while (iter.hasNext()) {
Element
titleElement = (Element) iter.next();
System.out.println("/students
/student/name:"+titleElement.getText());
}
} catch (Exception
ex) {
ex.printStackTrace();
}
}
}
TestDom4jReadExmple.java
package dom4jExample.read;
/**
* 测试Dom4jReadExmple解析的情况
* @author cuiweibing
*
@since 2007.8.10
*/
public class TestDom4jReadExmple {
public
static void main(String[] args) {
try{
Dom4jReadExmple drb=new Dom4jReadExmple();
//利用XPath操作XML文件,打印想要的属性值
drb.printSelectedNodeValue("studentInfo.xml");
}catch(Exception
ex){
ex.printStackTrace();
}
}
}
运行结果
/students/student/@age
:25
/students/student/@age
:45
/students/student/@age
:
/students
/student/college:PC学院
/students/student/college:PC学院
/students
/student/college:xxx学院
/students/student/college:yyyy学院
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:62354666 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[1]/telephone
##getPath:/students/student/telephone
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:62358888 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[2]/telephone
##getPath:/students/student/telephone
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:66666666 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[3]/telephone
##getPath:/students/student/telephone
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:88888888 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[4]/telephone
##getPath:/students/student/telephone
/students/student/name:崔卫兵
/students
/student/name:cwb
/students/student/name:xxxxx
/students/student
/name:yyyyyy
包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类),
TestDom4jReadExmple.java(测试解析的结果) (由于使用csdn
blog自带的代码粘贴工具会朝里加入一些"..."字符,虽然利于查看,但是不利于把代码copy出来运行,而亲自运行代码对程序员来说是很重要的,故
没有使用csdn blog自带的代码粘贴工具来插入代码,而是用着用直白的方式):
studentInfo.xml
<?xml version="1.0" encoding="gb2312"?>
<students>
<student age="25"><!--如果没有age属性,默认的为20-->
<name>崔卫兵</name>
<college>PC学院</college>
<telephone>62354666</telephone>
<notes>男,1982年生,硕士,现就读于北京邮电大学</notes>
</student>
<student>
<name>cwb</name>
<college
leader="leader1">PC学院</college><!--如果没有leader属性,默认的为
leader-->
<telephone>62358888</telephone>
<notes>男,1987年生,硕士,现就读于中国农业大学</notes>
</student>
<student age="45">
<name>xxxxx</name>
<college
leader="">xxx学院</college>
<telephone>66666666</telephone>
<notes>注视中,注释中</notes>
</student>
<student age="">
<name>yyyyyy</name>
<college leader="学院领导">yyyy学院</college>
<telephone>88888888</telephone>
<notes>注视中111,注释中222</notes>
</student>
</students>
Dom4jReadExmple.java
package dom4jExample.read;
import java.io.File;
import java.util.HashMap;
import
java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import
org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
*
利用dom4j与XPath进行XML编程
* @author cuiweibing
* @since 2007.8.10
*/
public
class Dom4jReadExmple {
/**
* 利用XPath操作XML文件,打印指定节点或者属性的值
* @param filename String 待操作的XML文件(相对路径或者绝对路径)
*/
public void
printSelectedNodeValue(String filename){
try {
SAXReader
saxReader = new SAXReader();
Document document =
saxReader.read(new File(filename));
//打印所有student节点的属性age值,如果有的话
List
list = document.selectNodes("/students/student/@age
");
Iterator
iter = list.iterator();
while (iter.hasNext()) {
Attribute
attribute = (Attribute) iter.next();
System.out.println("/students/student/@age
:"+attribute.getValue());
}
//打印所有college节点值,如果有的话
list =
document.selectNodes("/students/student");
iter = list.iterator();
while
(iter.hasNext()) {
Element bookElement = (Element) iter.next();
Iterator
iterator = bookElement.elementIterator("college");
while
(iterator.hasNext()) {
Element titleElement = (Element)
iterator.next();
System.out.println("/students/student
/college:"+titleElement.getText());
}
}
//测试节点的一些方法
list
= document.selectNodes("//telephone");
iter = list.iterator();
while
(iter.hasNext()) {
Element titleElement = (Element)
iter.next();
System.out.print("//telephone:getName:"+titleElement.getName());
System.out.print("
##getNodeType:"+titleElement.getNodeType());
System.out.print("
##getTextTrim:"+titleElement.getTextTrim());
System.out.print("
##getNamespaceURI:"+titleElement.getNamespaceURI());
System.out.print("
##getNodeTypeName:"+titleElement.getNodeTypeName());
System.out.print("
##getQualifiedName:"+titleElement.getQualifiedName());
System.out.print("
##getUniquePath:"+titleElement.getUniquePath());
System.out.println("
##getPath:"+titleElement.getPath());
}
//打印所有name节点值,如果有的话,
与上面college的取法不一样
list =
document.selectNodes("/students/student/name");
iter =
list.iterator();
while (iter.hasNext()) {
Element
titleElement = (Element) iter.next();
System.out.println("/students
/student/name:"+titleElement.getText());
}
} catch (Exception
ex) {
ex.printStackTrace();
}
}
}
TestDom4jReadExmple.java
package dom4jExample.read;
/**
* 测试Dom4jReadExmple解析的情况
* @author cuiweibing
*
@since 2007.8.10
*/
public class TestDom4jReadExmple {
public
static void main(String[] args) {
try{
Dom4jReadExmple drb=new Dom4jReadExmple();
//利用XPath操作XML文件,打印想要的属性值
drb.printSelectedNodeValue("studentInfo.xml");
}catch(Exception
ex){
ex.printStackTrace();
}
}
}
运行结果
/students/student/@age
:25
/students/student/@age
:45
/students/student/@age
:
/students
/student/college:PC学院
/students/student/college:PC学院
/students
/student/college:xxx学院
/students/student/college:yyyy学院
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:62354666 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[1]/telephone
##getPath:/students/student/telephone
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:62358888 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[2]/telephone
##getPath:/students/student/telephone
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:66666666 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[3]/telephone
##getPath:/students/student/telephone
//telephone:getName:telephone
##getNodeType:1 ##getTextTrim:88888888 ##getNamespaceURI:
##getNodeTypeName:Element ##getQualifiedName:telephone
##getUniquePath:/students/student[4]/telephone
##getPath:/students/student/telephone
/students/student/name:崔卫兵
/students
/student/name:cwb
/students/student/name:xxxxx
/students/student
/name:yyyyyy
相关文章推荐
- 使用dom4j和XPath解析XML之例子二
- 使用dom4j和XPath解析XML之例子二
- 使用dom4j和XPath解析XML之例子一
- 使用dom4j和XPath解析XML之例子一
- 使用dom4j解析XML例子
- 使用dom4j解析xml的例子
- 使用dom4j解析XML例子
- 使用DOM4J解析XML文档,以及使用XPath提取XML文档
- java使用dom4j和XPath解析XML与.net 操作XML小结
- java使用dom4j和XPath解析XML与.net 操作XML小结
- 使用dom4j解析XML例子
- 使用dom4j解析XML例子
- 使用dom4j的xPath解析XML
- javaweb学习总结十三(dom4j方式对XML文档进行解析以及Xpath的使用)
- 使用dom4j解析xml文档以及用XPath实现相关的操作
- dom4j使用XPath解析XML返回null的解决方法
- 使用DOM4J解析XML文档,以及使用XPath提取XML文档
- 使用dom4j的xPath解析XML
- java使用xpath和dom4j解析xml
- 使用dom4j解析XML例子