XmlPeek タスク
XML ファイルから XPath クエリで指定された値を返します。
パラメーター
XmlPeek
タスクのパラメーターの説明を次の表に示します。
パラメーター | 説明 |
---|---|
Namespaces |
省略可能な String 型のパラメーターです。XPath クエリ プレフィックスの名前空間を指定します。 |
Query |
省略可能な String 型のパラメーターです。XPath クエリを指定します。 |
Result |
省略可能な ITaskItem[] 型の出力パラメーターです。このタスクによって返される結果が含まれています。 |
XmlContent |
省略可能な String 型のパラメーターです。XML 入力を文字列として指定します。 |
XmlInputPath |
省略可能な ITaskItem 型のパラメーターです。 XML 入力をファイル パスとして指定します。 |
解説
表に示されているパラメーターを使用できるだけでなく、このタスクは TaskExtension クラスからパラメーターを継承します。このクラス自体は Task クラスから継承されます。 これらの追加のパラメーターの一覧とその説明については、「TaskExtension Base Class」を参照してください。
例
次のサンプル 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>