您的位置:首页 > 编程语言 > Java开发

java xml 框架 dom4j 解析 xml 字符串

2016-02-02 02:59 633 查看
dom4j 是 java 下最常用的 xml 解析框架之一,其他还有 jdom、dom 都属于优秀的 xml 框架,这里就以 dom4j 为例,示范 xml 字符串的解析

这是代码中 XML 的结构,metaData 内有一个 array 结构,需要循环读取

<?xml version="1.0"?>
<item name="\"20160202014140_208_59400.jpg\"" id="\"9737853a-3cb8-48d5-a735-a75c3e8fa721\"" relativePath="\"user\\Obama\\20160202014140_208_59400.jpg\"">
<fileInfo fileIndexed="\"2016-02-02" numPages="\"1\"" resolution="\"96\"" width="\"1600\"" height="\"1200\"" fileSize="\"202.42">
<metaData>
<item name="\"Width" value="\"1600\"" />
<item name="\"Height" value="\"1200\"" />
<item name="\"Resolution\"" value="\"96\"" />
</metaData>
<boxes />
</fileInfo>
</item>


代码演示

package dom4j;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.SAXReader;
import org.dom4j.jaxb.JAXBReader;
import org.dom4j.Element;
import java.awt.Component;
import java.util.Iterator;

import java.util.List;

public class Test01
{

public static void main(String[] args)
{
// xml 示範字符串
String xml = "<item name=\"20160202014140_208_59400.jpg\" id=\"9737853a-3cb8-48d5-a735-a75c3e8fa721\" relativePath=\"user\\Obama\\20160202014140_208_59400.jpg\"><fileInfo fileIndexed=\"2016-02-02 01:41:32\" numPages=\"1\" resolution=\"96\" width=\"1600\" height=\"1200\" fileSize=\"202.42 Kb\"><metaData><item name=\"Width (px)\" value=\"1600\" /><item name=\"Height (px)\" value=\"1200\" /><item name=\"Resolution\" value=\"96\" /></metaData><boxes /></fileInfo></item>";

try
{
// 載入 xml
Document doc = DocumentHelper.parseText(xml);
// 置 root
Element element = doc.getRootElement();

// node by root
String name = element.attributeValue("name");
String id = element.attributeValue("id");
String relativePath = element.attributeValue("relativePath");

System.out.println(name);
System.out.println(id);
System.out.println(relativePath);

// node by /item/fileInfo
element = element.element("fileInfo");

String fileIndexed = element.attributeValue("fileIndexed");
String numPages = element.attributeValue("numPages");
String resolution = element.attributeValue("resolution");

System.out.println(fileIndexed);
System.out.println(numPages);
System.out.println(resolution);

// node by /item/fileInfo/metaData
element = doc.getRootElement();
element = element.element("fileInfo");
element = element.element("metaData");
Iterator it = element.elementIterator();

// 遍歷 metaData 内的 item 并打印
while (it.hasNext())
{
// 取得 item
Element item = (Element) it.next();

String n = item.attributeValue("name");
String v = item.attributeValue("value");

System.out.print(n);
System.out.print(": ");
System.out.println(v);
}
}
catch (DocumentException e)
{
e.printStackTrace();
}

}

}


通过 dom4j 的解析,xml字符串显示结果如下:

20160202014140_208_59400.jpg

9737853a-3cb8-48d5-a735-a75c3e8fa721

user\Obama\20160202014140_208_59400.jpg

2016-02-02 01:41:32

1

96

Width (px): 1600

Height (px): 1200

Resolution: 96

dom4j 的下载地址:http://sourceforge.net/projects/dom4j/

Q群讨论 236201801

.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: