保留附加子元素

时间:2017-12-07 09:59:34

标签: java xml xml-parsing

我有以下XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<parent xmlns="urn:parent:ns:1.0"/>

我想出了如何将XML字符串转换为元素并使用此so将其附加到现有元素。

程序如下:

String text = "<child></child>";
Document document = builder.parse(new InputSource(new 
    StringReader(text)));
Element element = document.getDocumentElement();
Element importedNode = (Element) parent.importNode(element, true);
parent.getDocumentElement().appendChild(importedNode);

这会产生:

<?xml version="1.0" encoding="UTF-8"?>
<parent xmlns="urn:parent:ns:1.0">
    <child xmlns=""/>
</parent>

子元素清除其默认命名空间,我想从父级“继承”命名空间(在本例中为urn:parent:ns:1.0)。

最好是解决方案只使用JRE API for XML,没有第三方库(例如dom4j等)

1 个答案:

答案 0 :(得分:0)

此解决方案的灵感来自此so

String text = "<child></child>";
Document document = builder.parse(new InputSource(new 
    StringReader(text)));
Element originalElement = document.getDocumentElement();

Element newDocumentElement = 
    document.createElementNS("urn:parent:ns:1.0", 
    originalElement.getNodeName());

// no child elements, otherwise append all children to 
// newDocumentElement

Element importedNode = (Element) parent.importNode(newDocumentElement, 
    true);    
parent.getDocumentElement().appendChild(importedNode);