从节点而不是后代节点删除文本

时间:2019-10-29 15:27:04

标签: java html dom domparser

我有一个带有HTML数据的XML,并尝试删除“ Body”标签内的自由文本,而不删除子“ DIV”标签的内容。到目前为止,我已经使用了removeChild(),它也删除了BODY内部的所有其他内容。 然后尝试获取NODE_TYPE == 3以仅过滤和删除文本内容,但是运行它时却得到NODE_TYPE == 1。

使用setTextContent()时,它将整个标签数据设置为我的输入字符串。

这是我的XML外观:

<?xml version="1.0" encoding="UTF-8"?>
<HTML>
    <HEAD>
        <META content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    </HEAD>
    <BODY>
        <DIV class="WordSection1">
        <P>Enter Text here</P> <P>COMPLETED</P>
        </DIV>
    TEXT I WANT TO REMOVE
    </BODY>
</HTML>

更改后,我需要这样的输出:

<?xml version="1.0" encoding="UTF-8"?>
<HTML>
    <HEAD>
        <META content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    </HEAD>
    <BODY>
        <DIV class="WordSection1">
        <P>Enter Text here</P> <P>COMPLETED</P>
        </DIV>

    </BODY>
</HTML>

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我了解您正在使用Java附带的“旧” org.w3c.dom库。假设您将文档内容读入文档Node textNode = doc.getDocumentElement().getLastChild().getPreviousSibling().getLastChild(); doc.getDocumentElement().getLastChild().getPreviousSibling().removeChild(textNode); ,则可以执行以下操作:

$('#changeStatus').onClick()

...尽管就输入XML的更改而言,这不是很可靠。

您可能想尝试其他XML API(例如JDom)。旧的常常使您的生活变得不那么轻松。