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