使用dom4j和XPath
配置开发包
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar(XPath必备)
取某一节点
Element root = (Element) document.selectSingleNode("//root");
取某一节点的属性
Attribute attribute = (Attribute) document.selectSingleNode("//root/cell/@value");
使用经验
我们在做系统间交互时,通常通过自定义的xml文件进行数据交换。例如:系统A需要向系统B传输一个xml字串的条件如下:
<?xml version="1.0" encoding="gb2312"?>
<root systemid="Darenkou" userid="admin" default="DA" icon="0000">
<cell value=""/>
</root>
系
统A只需填充cell节点的value属性值,我的建议是将这段xml写成本地文件,每次传输时首先读取xml文件,再置cell节点的
value属性值,然后将xml对象转变成字串传给系统B。这样的优点是:一般systemid="Darenkou" userid="admin"
default="DA" icon="0000" 是传输参数,当有所变动时只需修改本地文件即可。
详细例程
test.xml
<?xml version="1.0" encoding="gb2312"?>;
<root id="TK12" name="管理员" value=""/>;
XmlTest.java
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class XmlTest {
public static String generateXml(HashMap map) {
String strXml = null;
if (map != null) {
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File("D:/test.xml"));
} catch (DocumentException e) {
e.printStackTrace();
}
Element root = (Element) document.selectSingleNode("//root");
root.attribute("value").setValue("分布");
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
String key = (String) iter.next();
String value = (String) map.get(key);
Element element = root.addElement("cell").addAttribute("value",
key);
element.addElement("element").addAttribute("type", "数值")
.addAttribute("name", "人数").addText(value);
}
strXml = encodeXml(document, "gb2312");
}
return strXml;
}
private static String encodeXml(Document document, String aEncode) {
// 进行编码转换
StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(aEncode);
try {
XMLWriter writer = new XMLWriter(format);
writer.setWriter(sw);
writer.write(document);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sw.toString();
}
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("上海", "200");
map.put("北京", "300");
map.put("天津", "300");
System.out.println(generateXml(map));
}
}
分享到:
相关推荐
dom4j和xpath的jar包,解析xml的最佳拍档.
详细介绍dom4j_xpath,相信对想学dom4j_xpath的朋友有帮助
dom4j 和dom4j 是一款比较好用的Xml解析工具jar,其中部分功能需要xpath的支持
NULL 博文链接:https://bbsanwei.iteye.com/blog/266394
xml+dom4j+xpath资料
dom4j和xpath必备jar包对xml文档进行解析的必须jar包!
Dom4j 解析XML 所使用的jar包,及添加XPath 支持所需要的 jar 包。具体使用可看我博客
NULL 博文链接:https://wangweiwei358.iteye.com/blog/764548
http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html 的doc文档。
dom4j帮助文档,以及xpath的参考文档,菜鸟必备工具。
无标题dom4j 和XPath jar包
NULL 博文链接:https://bbsanwei.iteye.com/blog/266392
NULL 博文链接:https://a52071453.iteye.com/blog/1708711
超全面javaweb第6天-_15_使用dom4j支持XPATH的操作一
超全面javaweb第6天-_16_使用dom4j支持XPATH的操作二
dom4j基础入门文档,与 W3C DOM API 相比,使用 dom4j 所包含的解析器的好处是 dom4j 拥有本地的 XPath 支持。
使用dom4j解析xml时用到的jar包dom4j-1.6.1.zip xpath用到的jar包jaxen-1.1-beta-6.jar