在Cake构建中检索XML值?

pat*_*dge 1 cakebuild

有没有一种使用Cake构建自动化系统从文件中检索XML值的简单方法?

我一直在寻找Cake.Common.Xml命名空间,但一切似乎都适合于修改(XmlPoke)或转换(XmlTransformation)XML.这些方法的文档使它们看起来适合于准备XML以供后续构建步骤使用,因此它们不返回任何内容.

理想情况下,我想直接FilePath使用XPath查询字符串进入对象并获取结果值.

具体来说,我试图从Xamarin.Android项目的AndroidManifest.xml中提取值,用于从Cake.Xamarin调用命名生成的APK,但似乎这个功能应该在Cake.Common.Xml级别.

pat*_*dge 6

Cake v0.8.0开始,现在XmlPeekCake.Common.Xml.XmlPeekAliases命名空间开始.你传递一个FilePath实例和一个XPath查询(带有命名空间之类的可选设置),它将返回一个字符串.

例如,给定一些像这样的本地XML文件......

<some>
    <nested>
        <thing someattribute="attributevalue" />
        <otherthing>some text value</otherthing>
    </nested>
</some>
Run Code Online (Sandbox Code Playgroud)

例如,获取属性的值...

var attributeValue = XmlPeek(File("example.xml"),
    "/some/nested/thing/@someattribute")
Run Code Online (Sandbox Code Playgroud)

......会给你一串attributevalue.

并获得文本节点值...

var textNodeValue = XmlPeek(File("example.xml"),
    "/some/nested/otherthing/text()");
Run Code Online (Sandbox Code Playgroud)

......会给你一串some text value.