gpt4 book ai didi

java - 使用 Java 删除标签并更改 XML 中的一行?

转载 作者:行者123 更新时间:2023-12-02 04:22:10 25 4
gpt4 key购买 nike

我有一个 XML,我需要使用 Java 从中删除整个标记。截至目前,该标签还没有具体位置,它可以在任何地方,但会在 client 内。标签。

<xml>

<client id="100" version="2">
<!-- some stuff here -->

<derta-config>
<!-- some stuff here -->
</derta-config>

<!-- some stuff here -->

<!-- some stuff here -->
</client>

我需要删除这个 <derta-config>标签完全来自上面的 XML。还有一件事。在同一个 XML 文件中,我只会有此行 <hello>collect_model = 1</hello> 的一个实例。 。下面world block 可以位于任何位置,也可以嵌套在各种其他 world 中堵塞。它将在 client 里面标签也是如此,但也可能有其他嵌套。

<world>
<world>
<world>
<world>
<hello>collect_model = 1</hello>
<hello>enable_data = 0</hello>
<hello>session_ms = 1000</hello>
<hello>max_collect = string_integer($extract("max_collect"))</hello>
<hello>max_collect = parenting(max_collect, max_collect, 100)</hello>
<hello>output('{')</hello>
</world>
</world>
</world>
</world>

我需要像这样制作该行:<hello>collect_model = 0</hello>同样world堵塞。所以我的最终XML不会有上面的<derta-config>标签和collect_model将是 0

<world>
<world>
<world>
<world>
<hello>collect_model = 0</hello>
<hello>enable_data = 0</hello>
<hello>session_ms = 1000</hello>
<hello>max_collect = string_integer($extract("max_collect"))</hello>
<hello>max_collect = parenting(max_collect, max_collect, 100)</hello>
<hello>output('{')</hello>
</world>
</world>
</world>
</world>

下面是我的代码,我不知道该怎么做才能删除这些东西?

File fileName = new File("file example");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(fileName);

更新:-

File fileName = new File("file example");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(fileName);

NodeList configTag = document.getElementsByTagName("derta-config");
for (int i = 0; i < configTag.getLength(); i++) {
Node node = configTag.item(i);
System.out.println(node.getNodeName());
node.getParentNode().removeChild(node);
}

最佳答案

接下来调用 document.getElementsByTagName("derta-config") ,迭代列表(应该很长,对吧?),然后使用 node.getParentNode().removeChild(node)

之后,您调用 document.getElementsByTagName("hello"),迭代列表,使用 node.getTextContent() 检查文本内容,如果它是您想要更改的值,您可以使用node.setTextContent(newValue)

然后将结果保存回文件中。请参阅 How to save parsed and changed DOM document in xml file?

关于java - 使用 Java 删除标签并更改 XML 中的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32639598/

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