4-1 JDOM 开始解析前的准备工作
1.创建一个SAXBuilder对象
SAXBuilder saxbuilder=newSAXBuilder();
2.创建输入流,将xml文件加载到输入流中(抛出FileNotFoundException)
Inputstream in=new FileInputstream("xxx.xml");
3.通过SAXBuilder的Build方法将输入流加载到saxb中获取dom对象
Document doc = saxbuilder.build(in);
4.通过document对象获取xml文件的根结点
Element rootElement =doc.getRootElement();
5.获取根结点下的子节点的List集合
List<Element> bookList = rootElement.getChildren();
4-2 应用 JDOM 解析节点属性
//继续进行解析
for
(Element book : bookList) {
System.out.println(
"===开始解析第"
+(bookList.indexOf(book)+
1
)+
"本书==="
);
//解析book的属性
List<Attribute> attrList = book.getAttributes();
// //知道节点下属性名称时,获取节点值
// book.getAttributeValue("id");
//遍历attrList(针对不清楚book节点下属性的名字和数量)
for
(Attribute attr : attrList) {
//遍历属性名
String attrName = attr.getName();
//遍历属性值
String attrValue = attr.getValue();
System.out.println(
"属性名:"
+attrName+
"---属性值:"
+attrValue);
}
System.out.println(
"===结束解析第"
+(bookList.indexOf(book)+
1
)+
"本书==="
);
}
4-3
应用 JDOM 解析子节点的名和值
- JDOM中每个节点都有getchildren()方法
// 对book节点的子节点的节点名以及节点值的遍历
List<Element> bookChilds = book.getChildren();
for (Element child : bookChilds) {
System.out.println("节点名:" + child.getName() + "----节点值:" + child.getValue());
}
4-4 JDOM 解析时乱码的处理
1.修改xml第一行的encoding属性
2.在代码中处理,应用IO流知识
//创建输入流,将XML文件加载到输入流中
InputStream in = new FileInputStream("src/book.xml");
//使用包装流InputStreamReader进行读取编码的指定
InputStreamReader isr = new InputStreamReader(in,"UTF-8");
4-5 在 JDOM 中存储 Book 对象
和之前的存储方式并无太大差异。
创建book对象ArrayList集合
添加节点属性值到book
if(attrName.equals("id")){
personEntity.setId(attrValue);
}
添加子节点属性值到book
if (child.getName().equals("name")) {
bookEntity.setName(child.getValue());
}
4-6 关于 JDOM 使用过程中 JAR 包的引用
1.通过右键项目,选择build Path下的Add External Archives导入系统任意路径下的jar包。但是这种方式并没有将jar包真正导入项目中,一旦迁移,则会丢失
2.通过右键项目,新建lib文件夹,直接将jar包拷贝到lib文件夹下,然后再通过build Path将jar包导入进来
4-7 应用 DOM4J 解析节点属性
1、创建一个 SAXReader 对象
SAXReader saxReader = new SAXReader();
2、通过SAXReader对象的read方法加载books.xml文件,获取docuemnt对象
Document document = saxReader.read(new file(...../book.xml));
3、通过 getRootElement() 获取根节点bookstore
Element bookstore = document.getRootElement();
4、通过 elementIterator() 获取book的迭代器
Iterator it = bookstore.elementIterator();
5、遍历迭代器,获取根节点中的信息(书籍)
while(it.hasNext()){
//获取子节点的元素
Element book = (Element)it.next();
}
6、获取属性节点类似 JDOM 解析
List<Attribute> attrs = book.attributes();
7、遍历,获取属性节点名、值
book.getName() book.getValue()
8、获取book子节点的迭代器
Iterator itt = book.elementIterator();
8、遍历,获取元素节点名、值
book.getName() book.getStringValue() / book.getText()