package com.dom.read.company;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
/**
*
* @author apple
* @time 2008-12-02/03
*/
public class readerCompany extends readerXML {
/**
* 使用构造函数初始化Document
*
*/
public readerCompany() {
try {
parseWithSAX();
} catch (DocumentException e) {
e.printStackTrace();
System.out.println("解析Company.xml出错了");
}
}
private Document document = null;
/**
* 读取XML文件,获得document对象.
*/
public void parseWithSAX() throws DocumentException {
SAXReader xmlReader = new SAXReader();
this.document = xmlReader.read(new File("company.xml"));
System.out.println(document);
}
/**
* 解析XML形式的文本,得到document对象
*
* @param xml
* @return
* @throws DocumentException
*/
public Document parseXML(String xml) throws DocumentException {
return DocumentHelper.parseText(xml);
}
/**
* 主动创建document对象.
*
*/
public Document createDocument() {
this.document = DocumentHelper.createDocument();
// Element root=document.addElement("root");//创建根节点
return document;
}
/**
* 得到根节点
*
* @param Document对象
* @return Element 返回节点名
*/
public Element getRootElement(Document document) {
Element rootElement = document.getRootElement();
return rootElement;
}
/**
* 获得某一个指定的子节点
*
* @param document
* @return
*/
public Element getElement(Document document, String xpath) {
Element memberElement = getRootElement(document).element(xpath);
return memberElement;
}
/**
* 获取节点的文字
*
* @param element
* 根节点
* @param nodeName
* 要打印出来的节点名
* @return
*/
public String getNodeText(Element element, String nodeName) {
String text = element.elementText(nodeName); // element为根节点时
// String text=element.getText(); //element为nodeName的节点
return text;
}
/**
* 取得节点名下的所有子节点
*
* @param element
* 根节点
* @param nodeName
* 某节点名
* @return
*/
public List getElements(Element element, String nodeName) {
List nodes = element.elements(nodeName);
return nodes;
}
/**
* 通过Document对象得到Nodes
*
* @param document
* @param xpath
* 要得到的某Element的路径
* @return
*/
public List getElements(Document document, String xpath) {
List nodes = document.selectNodes(xpath);
return nodes;
}
/**
* 设置公共的节点路径
*
* @param document
* @return
*/
public String getValue(String xpath) {
if (document == null)
return "";
Element element = (Element) document.selectSingleNode(xpath);
System.out.println(element + "=-=-=-=");
return element == null ? "" : element.getTextTrim();
}
/**
* 指定特有的单个节点路径
*
* @param document
* @param xpath
* @return
*/
public String getSingleNode(String xpath) {
return getValue("/Company/Department/Employees/Employee/" + xpath
+ "[text()='Zhang QI']");
// return
// getValue("/Company/Department/Employees/Employee[@id='10101']/"+xpath);
}
/**
* 查询多重模式的节点 使用 | 符号可以获得多重模式的节点 查询任意节点 使用 * 符号可以返回当前节点的所有子节点
*
* @param xpath
* @return
*/
public List getNodes(String xpath) {
// xpath="Company/Department/Department_Name |
// Company/Department/Manager";
xpath = "Company/*/Manager";
// 或者
// Element element=getRootElement(document);
// Node node=element;
return document.selectNodes(xpath);
}
/**
* 取得某个节点的某个属性
*
* @param element
* 要获取的节点对象
* @param attName
* 要获取的节点的属性名
* @return
*/
public String getAttribute(Element element, String attName) {
// attribute.getText()
return element.attributeValue(attName);
}
/**
* 为某个节点添加子节点
*
* @param Element
* 节点名
* @param nodeName
* 要创建的子节点名
*/
public void addElement(Element element, String nodeName, String nodeText) {
Element addElement = element.addElement(nodeName);
addElement.setText(nodeText);
addElement.addAttribute("id", "apple");
}
// 删除一个节点
// parentElement.remove(childElement);
// 删除某一个节点的属性
// Attribute attribute=root.attribute("size");// 属性名name
// root.remove(attribute);
// 查询一直path的节点集
public void getNodeList() {
List nodeList = document
.selectNodes("/Company/Department/Employees/Employee");
System.out.println(nodeList.size());
}
public void initParam() {
System.out.println(config);
String Employee_ID = config
.getString("Company.Department[@id='101'].Department_Name");
System.out.println(Employee_ID + "====");
}
public static void main(String[] args) {
// new readerCompany().getNodeList();
readerCompany reader = new readerCompany();
// reader.getNodeList();
// System.out.println(reader.getSingleNode("Name")+"======");
// List list=reader.getNodes("");
// for(int i=0;i<list.size();i++){
// // Node e=(Node)list.get(i);
// Element e=(Element)list.get(i);
// System.out.println(e.getName()+"---"+e.getText()+"=====");
// }
// reader.initParam();
// 取得某个属性
reader.test();
}
public void test() {
Element element=(Element)document.selectSingleNode("/Company/Department/Employees/Employee");
// element
System.out.println(getAttribute(element, "id"));
}
public Document getDocument() {
return document;
}
public void setDocument(Document document) {
this.document = document;
}
}
Dom4j解析xml java代码附带chm英文API
4星 · 超过85%的资源 需积分: 10 163 浏览量
2008-12-03
10:50:12
上传
评论
收藏 3.22MB RAR 举报
zqjava
- 粉丝: 0
- 资源: 5
最新资源
- Java SE Development Kit 11.0.23 macOS ARM64 DMG Installer
- python matplotlib 可视化编程.zip
- NumPy Matplotlib Matplotlib 是 Python 的绘图库 .zip
- Matplotlib主要的作用,是用来生成绘图,饼图,功率谱,条形图,错误图,散点图等.zip
- Java SE Development Kit 8u411 macOS x64 DMG Installer
- matplotlib 绘图库的cpp版本,负责图形的绘画与数据化.zip
- 1.使用xlrd扩展包读取Excel数据 2.使用Matplotlib绘制二维图像.zip
- a20bc49b4d1bfd71a60bfbde7c5fbe00a5ef385dc2087ffa3457e5cbf9d96897.png
- 基于STM32单片机的智能停车场设计源码+全部资料(优质毕业设计).zip
- 网上购物商城的设计与实现(部署视频)-kaic.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈