XmlPoke 任务

将 XPath 查询指定的值设置为 XML 文件。

参数

下表描述了 XmlPoke 任务的参数。

参数 描述
Namespaces 可选 String 参数。

指定 XPath 查询前缀的命名空间。 Namespaces 是由具有属性 PrefixUriNamespace 元素组成的 XML 代码片段。 属性 Prefix 指定要与 Uri 属性中指定的命名空间关联的前缀。 不要使用空 Prefix
Query 可选 String 参数。

指定 XPath 查询。
Value 必需 ITaskItem 参数。

指定要插入到指定路径中的值。
XmlInputPath 可选 ITaskItem 参数。

将 XML 输入指定为文件路径。

言论

除了具有表中列出的参数之外,此任务还从 TaskExtension 类继承参数,该类本身继承自 Task 类。 有关这些附加参数及其说明的列表,请参阅 TaskExtension 基类

下面是要修改的 sample.xml:

<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
         xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" >
<Identity Name="Sample.Product " Publisher="CN=1234" Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="456" PhonePublisherId="0" />
</Package>

在此示例中,如果要修改 /Package/mp:PhoneIdentity/PhoneProductId,请使用

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Namespace>
        <Namespace Prefix="dn" Uri="http://schemas.microsoft.com/appx/manifest/foundation/windows10" />
        <Namespace Prefix="mp" Uri="http://schemas.microsoft.com/appx/2014/phone/manifest" />
        <Namespace Prefix="uap" Uri="http://schemas.microsoft.com/appx/manifest/uap/windows10" />
    </Namespace>
</PropertyGroup>

<Target Name="Poke">
  <XmlPoke
    XmlInputPath="Sample.xml"
    Value="MyId"
    Query="/dn:Package/mp:PhoneIdentity/@PhoneProductId"
    Namespaces="$(Namespace)"/>
</Target>
</Project>

此处 dn 用作默认命名空间的人工命名空间前缀;只要目标 XML 中没有指定前缀,就可以使用它。

另请参阅