【发布时间】:2021-06-21 14:40:46
【问题描述】:
我有一个如下所示的 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Start xmlns="http://soap.sforce.com/2006/04/metadata">
<applicationVisibilities>
<application>Foo1</application>
<default>false</default>
<visible>false</visible>
</applicationVisibilities>
<applicationVisibilities>
<application>Foo2</application>
<default>false</default>
<visible>false</visible>
</applicationVisibilities>
<applicationVisibilities>
<application>Foo3</application>
<default>false</default>
<visible>false</visible>
</applicationVisibilities>
</Start>
基于与 applicationKey 相关的一些逻辑,我想删除以下 XML。我怎样才能做到这一点 ?目前,我可以删除子节点,但无法删除 applicationVisibilities 节点及其仅与 FOO2 相关的所有子节点
<applicationVisibilities>
<application>Foo2</application>
<default>false</default>
<visible>false</visible>
</applicationVisibilities>
Java 代码:
final NodeList origNodeList = document.getElementsByTagName("applicationVisibilities");
for (int temp = 0; temp < origNodeList.getLength(); temp++) {
Node nNode = origNodeList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
final String application = eElement.getElementsByTagName("application").item(0).getTextContent();
if(application.equals("Foo2")) {
Node node = eElement.getElementsByTagName("application").item(0);
if (node != null) {
if (node.getNodeName().equals("application")) {
node.getParentNode().removeChild(node);
node.normalize();
eElement.normalize();
}
}
}
}
}
【问题讨论】:
-
为什么这个标签是
xslt?您在寻找 XSLT 解决方案吗?