XmlPeek – úloha

Vrátí hodnoty zadané dotazem XPath ze souboru XML.

Parametry

Následující tabulka popisuje parametry XmlPeek úlohy.

Parametr Popis
Namespaces Volitelný String parametr.

Určuje obory názvů pro předpony dotazu XPath.
Query Volitelný String parametr.

Určuje dotaz XPath.
Result Volitelný ITaskItem[] výstupní parametr.

Obsahuje výsledky vrácené touto úlohou.
XmlContent Volitelný String parametr.

Určuje vstup XML jako řetězec.
XmlInputPath Volitelný ITaskItem parametr.

Určuje vstup XML jako cestu k souboru.

Poznámky

Kromě parametrů, které jsou uvedeny v tabulce, tento úkol dědí parametry z TaskExtension třídy, která sama dědí z Task třídy. Seznam těchto dalších parametrů a jejich popisů naleznete v tématu TaskExtension základní třída.

Příklad

Tady je ukázkový soubor settings.config XML, který se má přečíst:

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

V tomto příkladu, pokud chcete číst value, pak použijte kód podobný následujícímu:

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

U oborů názvů XML použijete Namespaces parametr, jak je znázorněno v následujícím příkladu. Se vstupním souborem 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>

A následující Target definice v souboru 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>

Výstup zahrnuje následující položky z TestPeek cíle:

  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>

Viz také