📄 mydom.java
字号:
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
/**
* 类名称:JDOM解析XML文件练习类
*/
public class Mydom {
// 文件地址
String fileName = "";
// 字符串构建的XML
String textXml = "";
// 声明对象
SAXBuilder builder = null;
Document doc = null;
Reader in = null;
InputStreamReader isr = null;
Element root = null;
/** 构造方法,使用默认的XML文件位置 */
public Mydom() {
fileName = "src/com/MyXml.xml";
}
/** 构造方法,设置XML文件位置 */
public Mydom(boolean bool, String fileName) {
if (bool)
this.fileName = fileName;
else
this.textXml = fileName;
}
/**根据条件设置读取XML方式及相关对象*/
public Element setXMLData() throws FileNotFoundException {
if (!this.fileName.equals("")) {
this.builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser");
isr = new InputStreamReader(new FileInputStream(fileName));
return this.getXML_File();
}else if(!this.textXml.equals("")){
builder = new SAXBuilder();
in = new StringReader(textXml);
return this.domTXT();
}
return null;
}
/**根据字符串构建的XML进行解析*/
public Element domTXT() {
try {
doc = builder.build(in);
root = doc.getRootElement();
in.close();
} catch (IOException ex) {
ex.printStackTrace();
} catch (JDOMException ex) {
ex.printStackTrace();
}
return root;
}
/**
* 根据本地XML文件得到数据
*
* @return 根节点(root)
*/
public Element getXML_File() {
try {
/*
* 建立解析器
* 用了其他的解析器(要加入其他的包(xml-apis.jar)):(速度200mm)xerces:org.apache.xerces.parsers.SAXParser
* 其实用默认解析器(不用加入其他的包)也可以解析 (速度100mm) jdk自带的60mm(这里的速度是是一个参考)
*/
doc = builder.build(isr);
root = doc.getRootElement();// 根节点
isr.close();
} catch (Exception e) {
e.printStackTrace();
}
return root;
}
/**
* 根据根元素下的元素名及该元素的子元素名返回该元素的子元素的值
*
* @param parent根元素下的元素名
* @param child
* 根元素下的元素的子元素名
* @return 根元素下的元素的子元素的值
* @throws FileNotFoundException
*/
@SuppressWarnings("unchecked")
public List<Element> getElementValue(String parent) throws FileNotFoundException {
List<Element> elementList = this.setXMLData().getChildren(parent);
return elementList;
}
// 测试
public static void main(String[] args) throws FileNotFoundException {
String textXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<animal><person><pname><name>huanglq</name><age>21</age>" +
"</pname></person><person><pname><name>kyo</name><age>22</age></pname><" +
"/person><person><pname><name>wang</name><age>10</age></pname>" +
"</person><dog><name>toly</name><age>1</age></dog>" +
"<dog><name>tom</name><age>3</age></dog></animal>";
Mydom mydom = new Mydom(false,textXml);
List<Element> list = mydom.getElementValue("person");
for (Element element : list) {
System.out.println(element.getName());
System.out.println("123" + element.getChildren("pname"));
System.out.println(element.getChildTextTrim("name"));
System.out.println(element.getChildTextTrim("age"));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -