当前位置:  开发笔记 > Android > 正文

如何使用Nant的xmlpoke目标删除节点

如何解决《如何使用Nant的xmlpoke目标删除节点》经验,为你挑选了1个好方法。

给出以下xml:


   Content A
   Content A

将XMLPoke与以下XPath一起使用:

rootnode/childnode[arg='b']

结果(如果替换字符串为空)是:


   Content A
   

当我们真正想要移除childnode本身时,已删除了childnode的内容.期望的结果是:


   Content A

必须根据childnode参数选择子节点.



1> Iain..:

我举起手来!这是一个提出错误问题的经典案例.

问题是您无法使用xmlpoke删除单个节点.Xmlpoke只能用于编辑特定节点或属性的内容.根据仅使用标准Nant目标的问题,没有一种优雅的方法来删除子节点.它可以使用Nant中的属性使用一些不优雅的字符串操作来完成,但是你为什么要这样做?

最好的方法是编写一个简单的Nant目标.这是我之前准备的一个:

using System;
using System.IO;
using System.Xml;
using NAnt.Core;
using NAnt.Core.Attributes;

namespace XmlStrip
{
    [TaskName("xmlstrip")]
    public class XmlStrip : Task
    {
        [TaskAttribute("xpath", Required = true), StringValidator(AllowEmpty = false)]
        public string XPath { get; set; }

        [TaskAttribute("file", Required = true)]
        public FileInfo XmlFile { get; set; }

        protected override void ExecuteTask()
        {
            string filename = XmlFile.FullName;
            Log(Level.Info, "Attempting to load XML document in file '{0}'.", filename );
            XmlDocument document = new XmlDocument();
            document.Load(filename);
            Log(Level.Info, "XML document in file '{0}' loaded successfully.", filename );

            XmlNode node = document.SelectSingleNode(XPath);
            if(null == node)
            {
                throw new BuildException(String.Format("Node not found by XPath '{0}'", XPath));
            }

            node.ParentNode.RemoveChild(node);

            Log(Level.Info, "Attempting to save XML document to '{0}'.", filename );
            document.Save(filename);
            Log(Level.Info, "XML document successfully saved to '{0}'.", filename );
        }
    }
}

将上述内容与对NAnt.exe.config文件的修改结合起来,以在构建文件中加载自定义目标和以下脚本:


这将删除childnode与参数ARG与值btarget.xml.这首先是我真正想要的!

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有