【发布时间】:2020-01-17 16:38:46
【问题描述】:
我有以下 XAML(它可能看起来很奇怪,因为我试图删除多余的部分):
<Root xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:a="clr-namespace:System.Collections.Generic;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Parent Name="SignIn">
<a:List x:TypeArguments="InArgument(x:String)" Capacity="4" />
</Parent>
<a:Dictionary x:TypeArguments="x:Stringa, x:Object">
<x:Boolean x:Key="IsExpanded">False</x:Boolean>
</a:Dictionary>
</Root>
我需要一个 XPath 查询(仅限于版本 1.0,因为 .NET 项目),它返回使用 a: 命名空间前缀的 所有 节点(无论节点的本地名称或位置如何)。
在前面的例子中,结果应该包含节点:
/Root/Parent/a:List
/Root/a:Dictionary
我找到了如何使用 specific 前缀搜索 specific 节点的答案,但绝对没有搜索具有特定前缀的 any 节点。
我能找到的最接近的是following,但它与命名空间前缀无关。
【问题讨论】:
-
真的是你关心的前缀,还是真正的命名空间? XML 中的普遍看法是,您应该允许人们使用他们喜欢的任何前缀,并且只有命名空间 URI 很重要。
-
就我而言,它只是前缀本身,因为我需要在定义和使用它的节点中更改它。长话短说:我正在编写一个静态 XAML 分析器,并且已经使用
a:作为默认命名空间。问题是我收到了要分析的 XAML,它也在使用a:。更改现有逻辑风险太大,因此我正在更改前缀的名称。
标签: c# .net xml xaml xpath-1.0