在 Cake 构建中检索 XML 值?
Retrieving an XML value in Cake build?
是否有使用 Cake 构建自动化系统从文件中检索 XML 值的简单方法?
我一直在探索 Cake.Common.Xml namespace,但一切似乎都是为了修改 (XmlPoke
) 或转换 (XmlTransformation
) XML。这些方法的文档使它们看起来适合准备 XML 以便在以后的构建步骤中使用,因此它们不会 return 任何东西。
理想情况下,我只想进入一个带有 XPath 查询字符串的 FilePath
对象并获取结果值。
具体来说,我正在尝试从 Xamarin.Android 项目的 AndroidManifest.xml 中提取值,用于从 Cake.Xamarin 调用中命名生成的 APK,但似乎此功能应该处于 Cake.Common.Xml 级别。
您显然已经意识到(自您创建以来)有一个活跃的 Cake 拉取请求来添加此功能:
https://github.com/cake-build/cake/pull/641
一旦准备就绪,这个 Pull Request 将被拉入 Cake,并且该功能将在 Cake 中开箱即用。
截至 Cake v0.8.0, there is now XmlPeek
from the Cake.Common.Xml.XmlPeekAliases
namespace。您向它传递一个 FilePath
实例和一个 XPath 查询(带有诸如命名空间之类的可选设置),它将 return 一个字符串。
例如,给定一些像这样的本地 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
.
是否有使用 Cake 构建自动化系统从文件中检索 XML 值的简单方法?
我一直在探索 Cake.Common.Xml namespace,但一切似乎都是为了修改 (XmlPoke
) 或转换 (XmlTransformation
) XML。这些方法的文档使它们看起来适合准备 XML 以便在以后的构建步骤中使用,因此它们不会 return 任何东西。
理想情况下,我只想进入一个带有 XPath 查询字符串的 FilePath
对象并获取结果值。
具体来说,我正在尝试从 Xamarin.Android 项目的 AndroidManifest.xml 中提取值,用于从 Cake.Xamarin 调用中命名生成的 APK,但似乎此功能应该处于 Cake.Common.Xml 级别。
您显然已经意识到(自您创建以来)有一个活跃的 Cake 拉取请求来添加此功能:
https://github.com/cake-build/cake/pull/641
一旦准备就绪,这个 Pull Request 将被拉入 Cake,并且该功能将在 Cake 中开箱即用。
截至 Cake v0.8.0, there is now XmlPeek
from the Cake.Common.Xml.XmlPeekAliases
namespace。您向它传递一个 FilePath
实例和一个 XPath 查询(带有诸如命名空间之类的可选设置),它将 return 一个字符串。
例如,给定一些像这样的本地 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
.