XmlPeek 任务
从 XML 文件返回 XPath 查询指定的值。
参数
下表描述了 XmlPeek
任务的参数。
参数 | 说明 |
---|---|
Namespaces |
可选 String 参数。指定 XPath 查询前缀的命名空间。 |
Query |
可选 String 参数。指定 XPath 查询。 |
Result |
可选的 ITaskItem[] 输出参数。包含由此任务返回的结果。 |
XmlContent |
可选 String 参数。指定 XML 输入为字符串。 |
XmlInputPath |
可选 ITaskItem 参数。 指定 XML 输入为文件路径。 |
备注
除了具有表中列出的参数外,此任务还将从本身继承自 Task 类的 TaskExtension 类继承参数。 有关这些其他参数的列表及其说明的信息,请参阅 TaskExtension 基类。
示例
下面是一个要读取的 XML 文件 settings.config
示例:
<appSettings>
<add key="ProjectFolder" value="S1" />
</appSettings>
在此示例中,如果要读取 value
,请使用如下所示的代码:
<Target Name="BeforeBuild">
<XmlPeek XmlInputPath="settings.config" Query="appSettings/add[@key='ProjectFolder']/@value">
<Output TaskParameter="Result" ItemName="value" />
</XmlPeek>
<Message Text="Using project folder @(value)." Importance="high" />
<PropertyGroup>
<ProjectFolder>@(value)</ProjectFolder>
</PropertyGroup>
<ItemGroup>
<Compile Include="Projects\$(ProjectFolder)\Controls\Control1.ascx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
</ItemGroup>
</Target>
有了 XML 命名空间,可以使用 Namespaces
参数,如下面的示例所示。 有了输入 XML 文件 XMLFile1.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<class AccessModifier='public' Name='test' xmlns:s='http://nsurl'>
<s:variable Type='String' Name='a'>This</s:variable>
<s:variable Type='String' Name='b'>is</s:variable>
<s:variable Type='String' Name='c'>Sparta!</s:variable>
<method AccessModifier='public static' Name='GetVal' />
</class>
以及在项目文件中定义的以下 Target
:
<Target Name="TestPeek" BeforeTargets="Build">
<!-- Find the Name attributes -->
<XmlPeek XmlInputPath="XMLFile1.xml"
Query="//s:variable/@Name"
Namespaces="<Namespace Prefix='s' Uri='http://nsurl' />">
<Output TaskParameter="Result" ItemName="value1" />
</XmlPeek>
<Message Text="@(value1)"/>
<!-- Find 'variable' nodes (XPath query includes ".") -->
<XmlPeek XmlInputPath="XMLFile1.xml"
Query="//s:variable/."
Namespaces="<Namespace Prefix='s' Uri='http://nsurl' />">
<Output TaskParameter="Result" ItemName="value2" />
</XmlPeek>
<Message Text="@(value2)"/>
</Target>
输出包括来自 TestPeek
目标的以下内容:
TestPeek output:
a;b;c
<s:variable Type="String" Name="a" xmlns:s="http://nsurl">This</s:variable>;<s:variable Type="String" Name="b" xmlns:s="http://nsurl">is</s:variable>;<s:variable Type="String" Name="c" xmlns:s="http://nsurl">Sparta!</s:variable>