Dom4j解析xml文件的简单快速用法
2017-07-09 19:20
411 查看
1. 介绍
使用Dom4j解析xml文件,需要用到的jar包是:dom4j-1.6.1.jar,下载地址:点我前往以读取以下test.xml测试文件为例简单说明其用法:
此文件是WebXml.com.cn 中文<->英文双向翻译WEB服务开发接口以GET方式调用Translator函数返回的xml文档。查询的关键词是 “good”
test.xml :
<?xml version="1.0" encoding="UTF-8"?> <DataSet xmlns="http://WebXml.com.cn/"> <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="Dictionary"> <xs:element name="Dictionary" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Trans"> <xs:complexType> <xs:sequence> <xs:element name="WordKey" type="xs:string" minOccurs="0" /> <xs:element name="Pron" type="xs:string" minOccurs="0" /> <xs:element name="Info" type="xs:string" minOccurs="0" /> <xs:element name="Translation" type="xs:string" minOccurs="0" /> <xs:element name="Mp3" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Refer"> <xs:complexType> <xs:sequence> <xs:element name="Rel" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Sentence"> <xs:complexType> <xs:sequence> <xs:element name="Orig" type="xs:string" minOccurs="0" /> <xs:element name="Trans" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <Dictionary xmlns=""> <Trans diffgr:id="Trans1" msdata:rowOrder="0"> <WordKey>good</WordKey> <Pron>gʊd</Pron> <Info /> <Translation>n. 善行,好处;adj. 好的,优良的,上等的;[pl.]商品</Translation> <Mp3>1033.mp3</Mp3> </Trans> <Sentence diffgr:id="Sentence1" msdata:rowOrder="0"> <Orig>My one good suit is at the cleaner's.</Orig> <Trans>我那套讲究的衣服还在洗衣店里呢。</Trans> </Sentence> <Sentence diffgr:id="Sentence2" msdata:rowOrder="1"> <Orig>He was very good to me when I was ill.</Orig> <Trans>我生病时他帮了我的大忙。</Trans> </Sentence> <Sentence diffgr:id="Sentence3" msdata:rowOrder="2"> <Orig>This is a good place for a picnic.</Orig> <Trans>这是一个野餐的好地方。</Trans> </Sentence> </Dictionary> </diffgr:diffgram> </DataSet>
1. 首先读取XML文件,获取Document对象。
SAXReader reader = new SAXReader(); reader.setEncoding("utf-8"); //待解析的文件放在工程目录下的src文件夹下 Document document = reader.read(new File("src/test2.xml"));
2. 然后获取根标签
//此处是<DataSet></DataSet> Element root = document.getRootElement();
3.再沿着路径依次找到要获取的标签
由xml文件可知,要想获取查询后的信息,即单词good的翻译,需要找到Trans、Sentence标签,然后再获取其中的值。而从根标签到Trans标签的路径是:DataSet–>diffgram–>Dictionary–>Trans
同理,从根标签获取Sentence标签的路径是:DataSet–>diffgram–>Dictionary–>Sentence
//依次找到各标签 Element elDif = root.element("diffgram");//得到diffgram标签, Element elDic = elDif.element("Dictionary");//得到Dictionary标签 Element elTrans = elDic.element("Trans");//得到Trans标签
注意 找 <diffgr:diffgram >标签时,标签名是diffgram,而不是diffgr,或者diffgr:diffgram 。
4.获取的标签内的值
//获取TransModel中子标签的各个值 String wordKey = elTrans.element("WordKey").getStringValue(); String Pron = elTrans.element("Pron").getStringValue(); String Info = elTrans.element("Info").getStringValue(); String Tran=elTrans.element("Translation").getStringValue(); String Mp3 = elTrans.element("Mp3").getStringValue();
至此,完成了解析xml文件,获取其中特定值的流程。
总结
使用Dom4j解析xml文件用到的常用方法为://获取Document对象(解析xml文件时) Document doc = reader.read(new File("src/test2.xml")); //或者 //获取Document对象(解析xml字符串时) Document doc = DocumentHelper.parseText(xmlStr);
//得到xml根标签 Element root = document.getRootElement();
//找到某一标签 Element element = root.element("标签名");
//获得标签值 String value = element.getStringValue(); //也可以用 String value = element.getText();
其他方法:
//获取标签名 String elName = element.getName();
//取得某节点下的某属性 Element root=document.getRootElement(); // 获取属性 Attribute attribute=root.attribute("size"); //取得属性的名 String text=attribute.getText(); //取得属性的值 String text=attribute.getText(); //也可以用: String text2=root.element("name").attributeValue("firstname"); //这个是取得根节点下name字节点的属性firstname的值.
相关文章推荐
- 在已知XML文件内容时,使用dom4j简单解析XML(String类型的XML)(用于服务器端)
- dom4j解析xml文件 简单例子
- 使用Digester解析XML文件简单范例
- XML文件的简单初步解析
- 用Dom4J解析带命名空间的XML文件
- 如何快速解析100M的xml文件
- XMLParser解析创建简单的XML文件
- 如何用dom4j修改XML文件的简单实例(csb原创)
- 简单XML文件解析
- dom4j解析xml文件
- 利用dom4j解析xml文件时发生The reference to entity password must end with the ';' delimiter.的解决方法
- 用DOM4j 对.XML文件解析方法
- 用python来解析xml文件(简单情况)
- 用dom4j解析带命名空间的xml文件
- 利用dom4j解析xml文件
- 用DOM4j解析xml文件,获得所有节点信息
- xml文件解析-DOM4J
- 最简单的一个XML解析-dom4j
- 用DOM4J解析XML文件
- 使用Dom4j解析和生成XML文件时的一些小tips