XmlPeek (tâche)

Retourne des valeurs telles que spécifiées par la requête XPath depuis un fichier XML.

Paramètres

Le tableau ci-dessous décrit les paramètres de la tâche XmlPeek .

Paramètre Description
Namespaces Paramètre String facultatif.

Spécifie les espaces de noms pour les préfixes de requête XPath.
Query Paramètre String facultatif.

Spécifie la requête XPath.
Result Paramètre de sortie ITaskItem[] facultatif.

Contient les résultats retournés par cette tâche.
XmlContent Paramètre String facultatif.

Spécifie l’entrée XML sous forme de chaîne.
XmlInputPath Paramètre ITaskItem facultatif.

Spécifie l’entrée XML sous forme de chemin de fichier.

Notes

En plus des paramètres répertoriés dans le tableau, cette tâche comprend des paramètres qu’elle hérite de la classe TaskExtension, qui elle-même hérite de la classe Task. Pour obtenir la liste de ces paramètres supplémentaires et leurs descriptions, consultez Classe de base TaskExtension.

Exemple

Voici un exemple de fichier XML settings.config à lire :

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

Dans cet exemple, si vous souhaitez lire value, utilisez un code semblable à ce qui suit :

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

Avec les espaces de noms XML, vous utilisez le paramètre Namespaces, comme dans l’exemple suivant. Avec le fichier XML d’entrée 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>

Et le Target suivant défini dans un fichier projet :

  <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 sortie inclut les éléments suivants à partir de la cible 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>

Voir aussi