dom4j解析xml获取根节点(java如何从一个xml文件读取根节点、子节点属性)

本文目录
- java如何从一个xml文件读取根节点、子节点属性
- 用dom4j解析XML如何找到一个节点的子结点
- XML文件为什么需要很多类来解析呢DOM4J,既可以创建XML,也可以解析现有的XML文档,是么
- Java怎么解析相同XML节点求大神指导一下
java如何从一个xml文件读取根节点、子节点属性
思路如下:
xml文件未知不明白什么意思?我索性就理解为一个目录下有很多xml文件,每个xml文件获取其中的bean节点属性。
1》 有xml文件路径,获取该路径下的所有文件,用后缀“.xml”或“.XML”过滤得到xml文件。
2》 javax.xml.parsers.DocumentBuilder builder = factory.newDocumentBuilder();
org.w3c.dom.Document doc = builder.parse(is); 创建文档对象。
3》doc.getChildNodes()获取文档中所有的节点,循环遍历所得节点node,
通过node.getAttributes()获取节点所有属性,获取各个属性name和值即可,输出想要得到的数据。
或者通过doc.getElementsByTagName("bean");直接指定bean节点。然后用同样的方法获取属性名和值,输出。
以上是根据jdk的W3C库解析的。想方便可以通过dom4j、jdom进行文件操作。思路变化不大。
用dom4j解析XML如何找到一个节点的子结点
方法一:
root = DocumentHelper.parseText(datas).getRootElement();
int num=-1;
//遍历根结点(books)的所有孩子节点(book节点)
for ( Iterator iter = root.elementIterator(); iter.hasNext(); ) {
Element element = (Element) iter.next();
num++;
//遍历book结点的所有孩子节点(即title....),并进行处理
for ( Iterator iterInner = element.elementIterator(); iterInner.hasNext(); ) {
Element elementInner = (Element) iterInner.next();
String a=elementInner.getName();//节点的名称,如title
String b=elementInner.getText();//节点的内容,如title标签里的内容
}
方法二
books = DocumentHelper.parseText(datas).getRootElement();
Element book = null;
Element title = null;
List list = books .elements("book");
for (int i = 0; i 《 list.size(); i++) {
book = (Element) list.get(i);
List listfile = book .elements("title ");
string a=((Element) listfile.get(0)).getTextTrim();//Dom4j Tutorials
string b=((Element) listfile.get(1)).getTextTrim();//Lucene Studing
}
XML文件为什么需要很多类来解析呢DOM4J,既可以创建XML,也可以解析现有的XML文档,是么
是的,dom4j既可以解析xml文档,也可以创建xml文档。使用dom4j必须导入dom4j的jar包。
以下是用dom4j来解析xml文件生成另一个xml文档的过程,我在这里只是将新生成的xml的文档打印,dom4j也可以新生成的xml的文档保存到磁盘。
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DomTest {
/**
* @param args
*/
public static void main(String args) {
try {
//读取xml文件信息
File inputXml=new File("D:/test.xml");
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(inputXml);
//获取根节点《xml》元素
Element root = document.getRootElement();
//创建xml文档
Document doc = DocumentHelper.createDocument();
//创建表格的根节点《table》元素
Element rootElement = DocumentHelper.createElement("table");
doc.setRootElement(rootElement);
//获取根节点《xml》元素的子节点《row》元素列表
Iterator iter = root.elementIterator("row");
//循环列表
while(iter.hasNext()) {
//得到每个《row》元素
Element rowEle=(Element)iter.next();
//创建表格中的行《tr》元素
Element trElement = rootElement.addElement("tr");
//创建表格中行《tr》元素的子元素列《td》元素
//第一列存储《row》元素的ballsnum属性值
Element ballsnum = trElement.addElement("td");
ballsnum.addText(rowEle.attributeValue("ballsnum"));
//第二列存储《row》元素的opentime属性值
Element opentime = trElement.addElement("td");
opentime.addText(rowEle.attributeValue("opentime"));
//第三列存储《row》元素的opencode属性值
Element opencode = trElement.addElement("td");
opencode.addText(rowEle.attributeValue("opencode"));
//第四列存储《row》元素的expect属性值
Element expect = trElement.addElement("td");
expect.addText(rowEle.attributeValue("expect"));
}
System.out.println(doc.asXML());
} catch (Exception e) {
e.printStackTrace();
}
}
}
我将
《?xml version="1.0" encoding="UTF-8"?》
《xml》
《row ballsnum="3" opentime="2014-01-19 21:30:00" opencode="05,14,16,21,29,30|12" expect="14008"/》
《row ballsnum="3" opentime="2014-01-16 21:30:00" opencode="08,10,12,14,18,28|14" expect="14007"/》
《/xml》
存储在D盘下的test.xml文件中
我读取D盘下的test.xml文件中的xml内容生成了一个表格
System.out.println(doc.asXML());语句将在控制台打印表格内容
打印结果如下:
《?xml version="1.0" encoding="UTF-8"?》
《table》
《tr》
《td》3《/td》
《td》2014-01-19 21:30:00《/td》
《td》05,14,16,21,29,30|12《/td》
《td》14008《/td》
《/tr》
《tr》
《td》3《/td》
《td》2014-01-16 21:30:00《/td》
《td》08,10,12,14,18,28|14《/td》
《td》14007《/td》
《/tr》
《/table》
Java怎么解析相同XML节点求大神指导一下
package com.sun;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jTest {
public void fun() {
File file = new File("d:\\toRead.xml");
//用SAXReader来加载xml文件
SAXReader saxReader = new SAXReader();
//获取xml文件的Document对象
Document document = saxReader.read(file);
//获得Document对象的根节点,就是UFIDA-FAHON-WebService节点
Element rootElement = document.getRootElement();
//list 里面装的就是你的xml文件根节点的所有子节点,就是所有的U8ArrivalVouch节点
List《Element》 list = rootElement.elements();
//增强for循环来遍历所有的U8ArrivalVouch节点
for (Element element : list) {
//待处理内容,可以继续用elements()方法继续获得所有的子节点
;
}
}
}
//你的xml文件的最后应该是《/UFIDA-FAHON-WebService》才对,这才符合xml规范
《UFIDA-FAHON-WebService》
......
《/UFIDA-FAHON-WebService》

更多文章:
html注册界面表单验证代码(html,js表单的验证,下面代码是想实现当输入6个字符以上用户名通过,少于时报错,但执行不了,求改错)
2025年6月23日 16:15
kali linux基础(变身滚动发行版,Kali Linux 2.0特性知多少)
2026年9月9日 23:45
access如何用查询值给一维数组赋值(如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!)
2025年9月7日 11:00
tp5666路由器(Tplink6500无线路由器怎么设置上网最流畅)
2025年11月18日 15:45
normal tanks第7关密码(请问normal tanks第五关以后的密码是多少诚挚谢谢!!)
2026年9月9日 02:00
编写webservice通讯接口(webservice接口怎么写)
2025年6月7日 15:45
尿常规中conduct是啥意思(尿常规报告单.请大家帮忙解读分析一下.)
2026年3月31日 19:30
简述php脚本程序工作流程(PHP脚本程序主要是由哪几部分组成)
2026年3月4日 15:15
java字符串截取后两位(JAVA截取所有指定字符后面的字符串)
2025年12月5日 23:15
告别php源码(apache 解析一个错误的php文件时,会直接显示php的源码,如何让他不显示源码)
2026年1月28日 18:00














