XmlPeek 작업

XML 파일에서 XPath 쿼리에 의해 지정된 대로 값을 반환합니다.

매개 변수

다음 표에서는 XmlPeek 작업의 매개 변수에 대해 설명합니다.

매개 변수 Description
Namespaces 선택적 String 매개 변수입니다.

XPath 쿼리 접두사에 대한 네임스페이스를 지정합니다.
Query 선택적 String 매개 변수입니다.

XPath 쿼리를 지정합니다.
Result 선택적 ITaskItem[] 출력 매개 변수입니다.

이 작업으로 반환되는 결과를 포함합니다.
XmlContent 선택적 String 매개 변수입니다.

XML 입력을 문자열로 지정합니다.
XmlInputPath 선택적 ITaskItem 매개 변수입니다.

XML 입력을 파일 경로로 지정합니다.

설명

이 작업은 표에 나열된 매개 변수 외에, Task 클래스에서 직접 상속하는 TaskExtension 클래스의 매개 변수도 상속합니다. 이러한 추가 매개 변수 및 해당 설명이 포함된 목록은 TaskExtension 기본 클래스를 참조하세요.

예시

다음은 읽을 샘플 XML 파일 settings.config입니다.

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

이 예제에서 value를 읽으려면 다음과 같은 코드를 사용합니다.

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

XML 네임스페이스에서는 다음 예제와 같이 Namespaces 매개 변수를 사용합니다. 입력 XML 파일 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>

프로젝트 파일에 다음 Target이 정의되어 있으면

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

출력은 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>

참고 항목