如何将命名空间添加到以下xml?

时间:2016-03-04 14:24:29

标签: java xml

下面是输入和预期输出xml。我正在使用JDOM解析器

输入:

<emp:transactions xmlns:emp="http://www.emp.com/dept"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="">
    <emp:transaction xmlns:dept="http://www.emp.com/emp">   
        <emp:empBooking emp:bookingNbr=""/>
    </emp:transaction>  
</emp:transactions>

预期产出:

<emp:transactions xmlns:emp="http://www.emp.com/dept" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="">
    <emp:transaction xmlns:dept="http://www.emp.com/emp">   
        <emp:empBooking emp:bookingNbr=""/>
        <emp:flexStringFields>
            <emp:flexString01>emp flex 1</emp:flexString01>
        </emp:flexStringFields>
    </emp:transaction>  
</emp:transactions>

代码:

SAXBuilder builder = new SAXBuilder();
Reader in = new StringReader(xmlAsString);
Document document = (Document)builder.build(in);
Element rootNode = document.getRootElement();
List<Element> list = rootNode.getChildren (
    "transaction", 
    Namespace.getNamespace("NS1", "http://www.emp.com/dept")
);
for(Element transaction: list) {
    // ...
}

我不确定如何添加名称空间为emp:flexStringFields的元素emp及其子emp:flexString01

请问如何添加它?

1 个答案:

答案 0 :(得分:0)

以下工作正常:

Element flexStringField = new Element (
    "flexStringFields", 
    "emp", 
    Namespace.getNamespace("NS1", "http://www.emp.com/dept").getURI()
);
content.addContent(flexStringField);