首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xmltask测试没有文本或属性的节点的存在

xmltask测试没有文本或属性的节点的存在
EN

Stack Overflow用户
提问于 2015-07-02 19:06:41
回答 1查看 576关注 0票数 1

我使用Ant 1.8.4和xmltask 1.16。我试图修改Maven pom.xml文件,以检查是否存在/project/properties元素,如果没有,则创建一个元素(这样我就可以添加一个子元素)。xmltask 文档指示我必须使用复制任务进行检查,然后在insert任务上使用if属性。但是使用这个代码

代码语言:javascript
复制
<xmltask source="${pomdir}/pom.xml" dest=""${pomdir}/pom.xml">
  <copy path="/:project/:properties" property="hasProperties"/>
  <insert path="/:project/:packaging" position="after" if="hasProperties"
    xml="&lt;properties&gt;"/>
</xmltask>

在存在现有/项目/属性节点时生成此警告

代码语言:javascript
复制
Can only copy/cut text() nodes and attribute values to properties (found com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl)

并插入第二个属性节点。在复制任务中的xpath末尾添加"/text()“可以消除警告,但不会修复输出中重复的属性节点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 21:59:17

我找到了解决办法。我必须有条件地选择没有属性子节点的项目节点。

代码语言:javascript
复制
<insert path="/:project[not(:properties)]/:packaging"
    position="after">
    <![CDATA[
    <properties>
        <customProperty>blah</customProperty>
    </properties>
    ]]>
</insert>
<insert path="/:project/:properties"
    xml="&lt;customProperty&gt;blah&lt;/customProperty&gt;"/>

第一个insert覆盖没有属性的输入文件,第二个insert覆盖已经具有属性的输入文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31192679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档