XmlPeek — zadanie

Zwraca wartości określone przez zapytanie XPath z pliku XML.

Parametry

W poniższej tabeli opisano parametry XmlPeek zadania.

Parametr Opis
Namespaces Opcjonalny String parametr.

Określa przestrzenie nazw dla prefiksów zapytań XPath.
Query Opcjonalny String parametr.

Określa zapytanie XPath.
Result Opcjonalny ITaskItem[] parametr wyjściowy.

Zawiera wyniki zwracane przez to zadanie.
XmlContent Opcjonalny String parametr.

Określa dane wejściowe XML jako ciąg.
XmlInputPath Opcjonalny ITaskItem parametr.

Określa dane wejściowe XML jako ścieżkę pliku.

Uwagi

Oprócz parametrów wymienionych w tabeli to zadanie dziedziczy parametry z TaskExtension klasy, która sama dziedziczy po Task klasie. Aby uzyskać listę tych dodatkowych parametrów i ich opisy, zobacz TaskExtension, klasa bazowa.

Przykład

Oto przykładowy plik settings.config XML do odczytania:

<appSettings>
  <add key="ProjectFolder" value="S1" />
</appSettings>

W tym przykładzie, jeśli chcesz odczytać valueplik , użyj kodu w następujący sposób:

<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>

W przypadku przestrzeni nazw XML należy użyć parametru Namespaces , jak w poniższym przykładzie. Za pomocą wejściowego pliku XMLFile1.xmlXML:

<?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>

I następujące Target elementy zdefiniowane w pliku projektu:

  <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>

Dane wyjściowe obejmują następujące dane z TestPeek miejsca docelowego:

  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>

Zobacz też