XmlPeek (tarea)

Devuelve valores conforme a lo que especifica una consulta XPath de un archivo XML.

Parámetros

En la siguiente tabla se describen los parámetros de la tarea XmlPeek .

Parámetro Descripción
Namespaces Parámetro String opcional.

Especifica los espacios de nombres para los prefijos de la consulta XPath.
Query Parámetro String opcional.

Especifica la consulta XPath.
Result Parámetro de salida ITaskItem[] opcional.

Contiene los resultados que devuelve esta tarea.
XmlContent Parámetro String opcional.

Especifica la entrada XML como una cadena.
XmlInputPath Parámetro ITaskItem opcional.

Especifica la entrada XML como una ruta de acceso a archivo.

Comentarios

Además de tener los parámetros que se enumeran en la tabla, esta tarea hereda los parámetros de la clase TaskExtension, que a su vez hereda de la clase Task. Para obtener una lista de estos parámetros adicionales y sus descripciones, consulte TaskExtension base class.

Ejemplo

Esto es un archivo XML settings.config de ejemplo para leer:

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

En este ejemplo, si quiere leer value, use un código similar al siguiente:

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

Con los espacios de nombres XML, se usa el parámetro Namespaces, como en el ejemplo siguiente. Con el archivo XML de entrada 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>

Y el siguiente Target definido en un archivo de proyecto:

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

La salida incluye lo siguiente del destino 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>

Vea también