gpt4 book ai didi

java - 从节点中删除文本,但不删除后代节点中的文本

转载 作者:行者123 更新时间:2023-12-01 22:18:21 25 4
gpt4 key购买 nike

我有一个包含 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>

有什么建议吗?

最佳答案

我知道您正在使用 Java 附带的“旧”org.w3c.dom 库。假设您将文档内容读入文档doc,您可以这样做:

Node textNode = doc.getDocumentElement().getLastChild().getPreviousSibling().getLastChild();
doc.getDocumentElement().getLastChild().getPreviousSibling().removeChild(textNode);

...尽管对于输入 XML 的更改来说这并不是很可靠。

您可能想尝试不同的 XML API(例如 JDom)。旧的往往不会让你的生活变得很轻松。

关于java - 从节点中删除文本,但不删除后代节点中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58610542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com