【问题标题】:Retrieving an XML value in Cake build?在 Cake 构建中检索 XML 值?
【发布时间】:2016-01-20 05:08:07
【问题描述】:

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

我一直在研究Cake.Common.Xml namespace,但似乎一切都倾向于修改 (XmlPoke) 或转换 (XmlTransformation) XML。这些方法的文档使它们看起来是为了准备 XML 以便在以后的构建步骤中使用,因此它们不会返回任何内容。

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

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

【问题讨论】:

    标签: cakebuild


    【解决方案1】:

    截至Cake v0.8.0,现在有来自Cake.Common.Xml.XmlPeekAliases namespace 的XmlPeek。你向它传递一个FilePath 实例和一个XPath 查询(带有诸如命名空间之类的可选设置),它会返回一个字符串。

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

    <some>
        <nested>
            <thing someattribute="attributevalue" />
            <otherthing>some text value</otherthing>
        </nested>
    </some>
    

    例如,要获取一个属性的值……

    var attributeValue = XmlPeek(File("example.xml"),
        "/some/nested/thing/@someattribute")
    

    ...会给你一串attributevalue。

    并获取文本节点值...

    var textNodeValue = XmlPeek(File("example.xml"),
        "/some/nested/otherthing/text()");
    

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

    【讨论】:

      【解决方案2】:

      正如您显然知道的(因为您创建了它),Cake 有一个活动的 Pull Request 来添加此功能:

      https://github.com/cake-build/cake/pull/641

      一旦准备好,这个拉取请求将被拉入 Cake,并且该功能将在 Cake 中开箱即用。

      【讨论】:

      • 注意:这个Pull Request刚刚被合并到develop分支,它应该可以在Cake的下一个版本0.8.0中使用。跨度>
      • 趁热拿走 :-) nuget.org/packages/Cake/0.8.0 包含 XmlPeek 别名的 Cake 0.8.0 版刚刚发布。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      相关资源
      最近更新 更多