1.给XML Element直接追加子Element时,无法添加的问题:
Element newElement = (Element)repeatElement.clone();
parentElement.add(newElement);
2.在解析XML文档结构时,如果根节点ROOT中存在命名空间,则利用XPATH无法搜索元素的问题。
如果XML文档:
<root xmlns="urn:hl7-org:v3">
<books>
<book entryNum="5">
<entry></entry>
</book>
<book>
<entry></entry>
</book>
<book>
<entry></entry>
</book>
</books>
</root>
root中存在xmlns="urn:hl7-org:v3",则利用XPATH解析:"root/books/book[@entryNum='5']/entry"时,会无法搜索到,原因是需要设置命名空间。
Map<String, String> map = new HashMap<String, String>();
//将xds注册为namesapce的名称
map.put("test", "urn:hl7-org:v3");
URL url = XPathTempConfig.class.getResource(messageXMLFile);
SAXReader saxReader = new SAXReader();
saxReader.getDocumentFactory().setXPathNamespaceURIs(map);
Document messagedocument = null;
try
{
messagedocument = saxReader.read(url.getFile());
}
catch (Exception e)
{
e.printStackTrace();
}
XPATH的设置应该修改为:"test:root/test:books/test:book[@entryNum='5']/test:entry"
3.在写XML文档时,如果给ROOT节点增加包含xmlns属性时,无法添加的问题:
正常Element添加属性都是利用:
Element cdaRootElement = cdaDocument.addElement("root");
cdaRootElement.setAttributeValue("xmlns", "urn:hl7-org:v3");
但就是无法添加。
需要做如下处理:Element cdaRootElement = cdaDocument.addElement("root", "urn:hl7-org:v3");
即可正常输出XML的ROOT属性了。