1

假设我有以下 XML:

<logger>
    <level value="ALL" />
    <appender-ref ref="AsyncAppender" />
</logger>
<logger name="PerformanceMetricsLog">
    <level value="OFF" />
</logger>

我需要对此进行 XML 转换。

我将如何做一个xdt:Locator匹配或第一个?第二个呢?

我试着做xdt:Locator="Match(name)",我得到一个错误,没有“名称”属性。(我曾希望如果该属性不存在,它会优雅地为匹配返回 false。)

4

1 回答 1

3

XDTMatch采用逗号分隔的属性名称列表,因此xdt:Locator="Match(name)"期望有一个名称为“name”的属性。

您可能正在考虑 XPath,其中缺少属性只会返回 false,您可以通过not(@name).

XDT 有一个XPath函数,它接受一个实际的 XPath,因此您可以编写如下内容:

xdt:Locator="XPath(//logger[not(@name)])"

选择无名logger元素。

注意:您编写的 XML 格式不正确。确保在您的实际 XML 中只有一个根元素。

于 2015-04-06T22:15:43.563 回答