相关疑难解决方法(0)

如何从XDocument获取NameTable?

如何从XDocument获取NameTable?

它似乎没有XmlDocument具有的NameTable属性.

编辑:从缺乏答案来判断,我猜我可能会忽略这一点.

我正在对像这样的XDocument进行XPath查询...

document.XPathSelectElements("//xx:Name", namespaceManager);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我必须手动将我想要使用的命名空间添加到XmlNamespaceManager,而不是像使用XmlDocument一样从XDocument中检索现有的命名表.

c# xml xpath linq-to-xml

38
推荐指数
3
解决办法
2万
查看次数

使用LINQ解析XML字符串(带命名空间)

我的意见

<A xmlns="http://abc.com"> 
    <B>"b"</B>
    <C>"c"</C>
    </A>
Run Code Online (Sandbox Code Playgroud)

我的守则

XNamespace ns = XNamespace.Get("http://abc.com");

var query= from node in doc.Descendants(ns+ "A") 
           select new
            (
                        B = (string)node.Element(ns+"B"),
                            C = (string)node.Element(ns+ "C")
             );
Run Code Online (Sandbox Code Playgroud)

我的问题

ns每次都要添加node.Element()吗?或者还有其他方法吗?

c# linq visual-studio-2010 xml-parsing

6
推荐指数
1
解决办法
645
查看次数

使用xml名称空间前缀C#搜索XML元素

更新

我想要一个表达式(XPath,或类似的Regex表达式),它可以将XML元素与特定的命名空间相匹配.例如,我想找到link元素的值(例如,我需要http://url within <b:link>http://url</b:link>)如下所示.但是,命名空间前缀根据不同的xml文件而有所不同,如案例1-3所示.

考虑到名称空间前缀允许的字符(例如,任何字符允许/有效),任何人都可以提供解决方案(XPath,正则表达式或类似的?

请注意,因为xml文件未知,所以命名空间和前缀在运行时之前是未知的.这是否意味着我不能使用这个XDocument/XmlDocument,因为它需要在代码中知道命名空间.

更新

情况1

<A xmlns:b="link">
<b:link>http://url
</b:link>
</A>
Run Code Online (Sandbox Code Playgroud)

案例2

<A xmlns="link">
<link>http://url
</link>
</A>
Run Code Online (Sandbox Code Playgroud)

案例3

<A xmlns:a123="link">
<a123:link>http://url
</a123:link>
</A>
Run Code Online (Sandbox Code Playgroud)

请注意,link元素中的url可以是任何http url,并且在运行时之前是未知的.

更新

请标记我的问题.

c# regex xml

1
推荐指数
1
解决办法
6376
查看次数

标签 统计

c# ×3

xml ×2

linq ×1

linq-to-xml ×1

regex ×1

visual-studio-2010 ×1

xml-parsing ×1

xpath ×1