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