DOM4J jar包 获取xml文件中的标签内容
2017-10-14 21:24
579 查看
// 1.导入DOM4J jar包
// 创建解析器对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream("students.xml"));
// 获取根标签对象
Element rootElement = doc.getRootElement();
// 获取根标签下的子标签 默认获取的是第一个子标签
Element stuElement = rootElement.element("student");
System.out.println(stuElement.getName());
System.out.println("-------------以下是获取所有子标签---------------------");
// 获取所有的子标签
List<Element> eles = rootElement.elements();
for (Element ele : eles) {
System.out.println(ele.getName());
}
// 方式三 获取所有子标签
System.out.println("-------------通过迭代器获取所有子标签---------------------");
Iterator<Element> elementIterator = rootElement.elementIterator();
while (elementIterator.hasNext()) {
Element element = elementIterator.next();
System.out.println(element.getName());
}
System.out.println("-------------以下是获取属性对象--------------------------");
Element element = rootElement.element("student");
Attribute attribute = element.attribute("id");
String value = attribute.getValue();
String name = attribute.getName();
System.out.println(name);
System.out.println(value);
// 方式2:直接获取属性值
System.out.println("------------------------------------------");
String value2 = rootElement.element("student").attributeValue("id");
System.out.println(value2);
// 方式三:获取所有的属性对象
List<Attribute> attributes = rootElement.element("student").attributes();
for (Attribute atr : attributes) {
String name2 = atr.getName();
String value3 = atr.getValue();
System.out.println(name2 + "======" + value3);
}
System.out.println("---------------通过迭代器获取所有的属性对象--------------------------");
Iterator<Attribute> attributeIterator = rootElement.element("student").attributeIterator();
while(attributeIterator.hasNext()){
Attribute attribute2 = attributeIterator.next();
System.out.println(attribute2.getName()+"=="+attribute2.getValue());
}
System.out.println("--------------获取标签之间的文本-----------------------");
//层层往下拿
String text = doc.getRootElement().element("student").element("name").getText();
System.out.println(text);
//方式2:
String text2 = doc.getRootElement().element("student").elementText("name");
System.out.println(text2);
// 抽取方法获取所有的节点
// getNodes(rootElement);
// 获取节点对象
// Node node = doc.node(0);//只能获取一个子节点
// System.out.println(node.getName());
// 获取所有的节点
// Iterator<Node> iterator = doc.nodeIterator();
// while (iterator.hasNext()) {
// Node nodes = iterator.next();
// System.out.println(nodes.getName());
//
// }
}
private static void getNodes(Element ele) {
System.out.println(ele.getName());
Iterator<Node> iterator = ele.nodeIterator();
while (iterator.hasNext()) {
Node nodes = iterator.next();
if (nodes instanceof Element) {//
Element ele2 = (Element) nodes;
getNodes(ele2);// 递归调用 方法内部调用方法本身 注意递归比较耗费资源,因为他要不断的加载方法进栈内存
}
}
}
/*获取节点对象:1.node() 获取单个节点对象 2.nodeIterator(); 获取多个节点对象 只能获取子节点
* 2.获取根标签对象 getRootElement()
* 3.Element();获取第一个子标签 Elements() 获取所有的子标签
* elememtesIterator() 获取所有子标签对象
* 4.attribute() 获取单个属性对象 getName()获取属性的键 getValue()获取属性的值
* attributes()获取所有的属性对象
* attributeIterator() 获取所有的属性对象
* 直接获取属性对象的值 attributeValue()
* 5.先获取到文本所在的标签对象 通过getText()拿出这个标签直接的文本
* elementText("name");
*
*
*
*
*
*
*
*
*
*
*/
// 创建解析器对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream("students.xml"));
// 获取根标签对象
Element rootElement = doc.getRootElement();
// 获取根标签下的子标签 默认获取的是第一个子标签
Element stuElement = rootElement.element("student");
System.out.println(stuElement.getName());
System.out.println("-------------以下是获取所有子标签---------------------");
// 获取所有的子标签
List<Element> eles = rootElement.elements();
for (Element ele : eles) {
System.out.println(ele.getName());
}
// 方式三 获取所有子标签
System.out.println("-------------通过迭代器获取所有子标签---------------------");
Iterator<Element> elementIterator = rootElement.elementIterator();
while (elementIterator.hasNext()) {
Element element = elementIterator.next();
System.out.println(element.getName());
}
System.out.println("-------------以下是获取属性对象--------------------------");
Element element = rootElement.element("student");
Attribute attribute = element.attribute("id");
String value = attribute.getValue();
String name = attribute.getName();
System.out.println(name);
System.out.println(value);
// 方式2:直接获取属性值
System.out.println("------------------------------------------");
String value2 = rootElement.element("student").attributeValue("id");
System.out.println(value2);
// 方式三:获取所有的属性对象
List<Attribute> attributes = rootElement.element("student").attributes();
for (Attribute atr : attributes) {
String name2 = atr.getName();
String value3 = atr.getValue();
System.out.println(name2 + "======" + value3);
}
System.out.println("---------------通过迭代器获取所有的属性对象--------------------------");
Iterator<Attribute> attributeIterator = rootElement.element("student").attributeIterator();
while(attributeIterator.hasNext()){
Attribute attribute2 = attributeIterator.next();
System.out.println(attribute2.getName()+"=="+attribute2.getValue());
}
System.out.println("--------------获取标签之间的文本-----------------------");
//层层往下拿
String text = doc.getRootElement().element("student").element("name").getText();
System.out.println(text);
//方式2:
String text2 = doc.getRootElement().element("student").elementText("name");
System.out.println(text2);
// 抽取方法获取所有的节点
// getNodes(rootElement);
// 获取节点对象
// Node node = doc.node(0);//只能获取一个子节点
// System.out.println(node.getName());
// 获取所有的节点
// Iterator<Node> iterator = doc.nodeIterator();
// while (iterator.hasNext()) {
// Node nodes = iterator.next();
// System.out.println(nodes.getName());
//
// }
}
private static void getNodes(Element ele) {
System.out.println(ele.getName());
Iterator<Node> iterator = ele.nodeIterator();
while (iterator.hasNext()) {
Node nodes = iterator.next();
if (nodes instanceof Element) {//
Element ele2 = (Element) nodes;
getNodes(ele2);// 递归调用 方法内部调用方法本身 注意递归比较耗费资源,因为他要不断的加载方法进栈内存
}
}
}
/*获取节点对象:1.node() 获取单个节点对象 2.nodeIterator(); 获取多个节点对象 只能获取子节点
* 2.获取根标签对象 getRootElement()
* 3.Element();获取第一个子标签 Elements() 获取所有的子标签
* elememtesIterator() 获取所有子标签对象
* 4.attribute() 获取单个属性对象 getName()获取属性的键 getValue()获取属性的值
* attributes()获取所有的属性对象
* attributeIterator() 获取所有的属性对象
* 直接获取属性对象的值 attributeValue()
* 5.先获取到文本所在的标签对象 通过getText()拿出这个标签直接的文本
* elementText("name");
*
*
*
*
*
*
*
*
*
*
*/
相关文章推荐
- 使用dom4j解析xml标签,将标签属性与文本内容添加进集合
- Domj4读取XML文件--实现获取XML文件中所有的标签节点
- java中写入xml文件内容的方法:DOM,Jdom,pull,Dom4j,Sax
- 使用dom4j去掉Xml文件中注释内容
- php获取xml文件内容
- 06_XML的写入_dom4j添加、删除、修改Xml文件内容
- struts.xml配置文件的内容标签
- C#.net 获取XML文件中某个时间标签判断
- c# 获取xml文件中某些节点下的标签节点
- xml文件去掉所有标签只保留内容部分
- JAVASCRIPT 获取 XML 文件内容
- JAVASCRIPT 获取 XML 文件内容
- VBScript Sample:遍历文件夹并获取XML文件中指定内容
- sax解析 得到xml文档所有内容和获取指定标签的值
- spring boot 获取jar 中xml文件属性
- dom4j创建XML添加属性和标签和内容添加CDATA 删除属性
- 获取XML文件内容
- struts.xml配置文件的内容标签
- JS获取本地文件并且解析文件内容(XML,TXT)
- 使用dom4j解析xml格式字符串,获取标签属性和内容