设为首页 加入收藏

TOP

Java使用dom4j解析XML字符串
2014-11-24 03:11:37 来源: 作者: 【 】 浏览:2
Tags:Java 使用 dom4j 解析 XML 字符串

对于XML文件或者字符串的解析有很多方法。


1、较简洁的是W3C,实例如下:
public void parseXmlByW3C(){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
Document doc = null;
try {
db = dbf.newDocumentBuilder();
InputStream inputStream = ClassLoader.getSystemResourceAsStream("interface.xml");
doc = db.parse(inputStream);
} catch (ParserConfigurationException e1) {
e1.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
NamedNodeMap nodes = doc.getElementsByTagName("Interface").item(0).getAttributes();
for(int i=0;i System.out.println(nodes.item(i).getNodeName()+" : " +nodes.item(i).getNodeva lue()+"\n");
}
NodeList nodeList = doc.getElementsByTagName("property");
for(int i=0;i System.out.println(nodeList.item(i).getAttributes().item(0).getNodeva lue()+":"+nodeList.item(i).getTextContent()+"\n");
}
}



2、使用Dom4j解析XML字符串:



import java.text.ParseException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicInteger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public void parseXmlByDom4j(){
//需要解析的XML串
String strXml = "< xml version=\"1.0\" encoding=\"UTF-8\" >" +""+"test01" +"$ARG0"+"";
Map map = new HashMap();
Document doc = null;
try {
doc = DocumentHelper.parseText(strXml);
} catch (DocumentException e) {
//解析失败
e.printStackTrace();
}
if(doc==null)
return;
//获取跟节点
Element element = doc.getRootElement();
//获得根节点所有属性值
List< > iList = element.attributes();
for(int i=0;i Attribute attribute = (Attribute)iList.get(i);
map.put(attribute.getName(), attribute.getValue());
}
//遍历根节点下属性为property的子节点
Iterator< > pIterator = element.elementIterator("property");
while(pIterator.hasNext()){
Element ele = (Element)pIterator.next();
//子节点的name的值,和Text
map.put(ele.valueOf("@name"), ele.getText());
}
//循环输出
Iterator> iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Entry entry = iterator.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
}


在实际应用中,把W3C的解析方法放到Web工程中,总有解析错误,推荐使用Dom4j。


推荐阅读:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇关于Python中 __init__.py 下一篇Java文件定位读取

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)