xml文件例子
<?xml version="1.0" encoding="UTF-8"?>
http://www.bocsoft.com/OnlineTran" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bocsoft.com/OnlineTran
OnlineTranSchema.xsd">
BA050004
合同账户列表查询
16
numeric
M
合同号码
1
alphanumeric
M
功能码
如果其中含有命名空间定义的,解析xml代码如下:
HashMap xmlMap = new HashMap();
String defaultNS = "http://www.bocsoft.com/OnlineTran";
xmlMap.put("x", defaultNS);
XPath x = document.createXPath("//x:OnlineTran/x:Trade/x:Input/x:InputTranData");
x.setNamespaceURIs(xmlMap);
List lt = x.selectNodes(document);
可以参考的api说明页面链接及例子代码如下:http://www.dev2dev.cn/javadocs/dom4j161/apidocs/org/dom4j/XPath.html
Map uris = new HashMap();
uris.put("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
uris.put("m", "urn:xmethodsBabelFish");
XPath xpath = document
.createXPath("SOAP-ENV:Envelope/SOAP-ENV:Body/m:BabelFish");
xpath.setNamespaceURIs(uris);
Node babelfish = xpath.selectSingleNode(document);
如果没有命名空间的定义,解析xml代码如下:
List attList = document.selectNodes("//OnlineTran/Trade/Input/InputTranData");
使用Dom4j解析xml时的一些常见问题:
1. 写入 Xml 文件的时候默认是全部内容写为一行,这个可以通过加入 Format 来解决:
OutputFormat format = OutputFormat.createPrettyPrint();
2. Xml 中文问题
2.1 Xml 最好设为 utf-8 格式,为什么不设成 gbk,我以前 blog 写过的:
format.setEncoding("utf-8");
2.2 不要用 FileWriter 输出双字节,改为 FileOutputStream 输出单字节:
XMLWriter output = new XMLWriter(new FileOutputStream(configFile), format);
3. CDATA类型文本输入问题
Element conTblOpr = rowElement.addElement(XmlDBConstants.CON_TBL_OPR);// 加入节点
DefaultCDATA conTblOprCdata = new DefaultCDATA(conTblOprField);// CDATA格式化
conTblOpr.add(conTblOprCdata );// 加入CDATA文本
Dom4j 里面已经内置了对 CDATA 类型文本的支持,不要硬编码去在文本两边加。
XPath教程
http://www.zvon.org/xxl/XPathTutorial/General/examples.html
dom4j使用心得
http://blog.csdn.net/jgsfy/archive/2005/10/25/516026.aspx
DOM4J对XML文档的读写增删改等
http://www.zhuoda.org/weiking/54385.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/63654/viewspace-900646/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/63654/viewspace-900646/