次の方法で共有


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="&lt;Namespace Prefix='s' Uri='http://nsurl' /&gt;">
      <Output TaskParameter="Result" ItemName="value1" />
    </XmlPeek>
    <Message Text="@(value1)"/>
    <!-- Find 'variable' nodes (XPath query includes ".") -->
    <XmlPeek XmlInputPath="XMLFile1.xml"
             Query="//s:variable/."
             Namespaces="&lt;Namespace Prefix='s' Uri='http://nsurl' /&gt;">
      <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>

関連項目