我需要通过此属性的XPath从XML文档中删除属性.
一切都应该用Java来完成.
我能够使用以下代码找到属性的节点:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document document = dbf.newDocumentBuilder().parse(new File("input.xml"));
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
XPathExpression expression = xpath.compile("//div[@id='1']/@id");
Node myNode = (Node) expression.evaluate(document, XPathConstants.NODE);
Run Code Online (Sandbox Code Playgroud)
我的想法是获取属性的节点父节点,然后调用removeChild方法将属性的节点作为参数传递.
myNode.getParentNode().removeChild(myNode);
Run Code Online (Sandbox Code Playgroud)
遗憾的是,根据API文档,属性节点始终没有父节点.
在这种情况下,有没有办法确定属性的Node父节点?
有没有办法检查蚂蚁是否在某处定义了具有特定refid的引用?
例如,我需要在使用之前检查my.ref是否已定义,如下所示.
<pathconvert property="my.prop" refid="my.ref">
...
</pathconvert>
Run Code Online (Sandbox Code Playgroud)
我需要这样做,因为在我的项目中有一些不受我控制的构建脚本(实际上,我不允许有时检查它们的内容).
这些脚本应该定义此引用.不幸的是,由于某些原因,我不能指望这个引用是定义的.
所以,我需要检查它并执行优雅的错误处理或一些特定的操作.
有什么办法吗?
更新:
我找到了自己做的正确方法.它可以通过使用任务的isreference元素来condition完成.
例如:
<condition property="my.ref.defined">
<isreference refid="my.ref"/>
</condition>
<fail unless="my.ref.defined" message="Reference my.ref not defined."/>
Run Code Online (Sandbox Code Playgroud)