在Java中使用XML - DOM

时间:2015-11-12 15:30:41

标签: java xml dom

我的输入XML是:

<ROOT>
    <Child_1>
        <Child_1_1>
            <Child_1_1>
                <p>test123 test456 test789 test101112</p>
            </Child_1_1>
        </Child_1_1>
    </Child_1>
</ROOT>

我想操纵,就是说,在我的段落中23个字符之后,我想将我的文本拆分为两个(或者如果有多个23个字符出现的话更多)段落,那么就说:

<ROOT>
    <Child_1>
        <Child_1_1>
            <Child_1_1>
                <p>test123 test456 test789</p><p>test101112</p>
            </Child_1_1>
        </Child_1_1>
    </Child_1>
</ROOT>

在Java代码中,我使用的是W3C DOM:

NodeList nodeListXml = documentXml.getElementsByTagName("p");
for (int i = 0; i < nodeListXml.getLength(); i++) {
    Element elementXml = (Element) nodeListXml.item(i);
    String unformattedText = elementXml.getTextContent();
    String formattedText;

    //some logic to split text
    //...
    //some logic to split text

    //here "formattedText" value is "test123 test456 test789</p><p>test101112" as expected
    elementXml.setTextContent(formattedText);
}

之后,我的“documentXml”包含不正确的值:

<ROOT>
    <Child_1>
        <Child_1_1>
            <Child_1_1>
                <p>test123 test456 test789&lt;/p&gt;&lt;p&gt;test101112</p>
            </Child_1_1>
        </Child_1_1>
    </Child_1>
</ROOT>

我的逻辑在某种程度上不起作用,因为那些被转义的实体。我该如何解决?

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

String[] afterSplit =  unformattedText.split("")//you split logic
for(String text : afterSplit){
    Element element = documentXml.createElement("p");
    element.setTextContent(text);
    elementXml.appendChild(element);
}