XmlPeek 工作
從 XML 檔案傳回 XPath 查詢所指定的值。
參數
下表說明 XmlPeek
工作的參數。
參數 | 描述 |
---|---|
Namespaces |
選擇性的 String 參數。指定 XPath 查詢前置詞的命名空間。 |
Query |
選擇性的 String 參數。指定 XPath 查詢。 |
Result |
選擇性的 ITaskItem[] 輸出參數。包含此工作所傳回的結果。 |
XmlContent |
選擇性的 String 參數。以字串形式指定 XML 輸入。 |
XmlInputPath |
選擇性的 ITaskItem 參數。 將 XML 輸入指定為檔案路徑。 |
備註
除了具有表格中所列的參數之外,此工作也繼承 TaskExtension 類別的參數,而該類別本身又繼承 Task 類別。 如需這些其他參數的清單及其描述,請參閱 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>