如何使用XDocument C#获取xsi:noNamespaceSchemaLocation属性的值

时间:2020-04-01 11:11:40

标签: c# xml linq-to-xml xml-namespaces

我有很多XML文件,这些文件具有各种xsi:noNamespaceSchemaLocation值。这些位于文档根节点中的属性中。我需要从文件中读取xsi:noNamespaceSchemaLocation值。这应该不难,但我正在努力。

示例XML(这是根节点):

<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:dc="http://www.purl.org/dc/elements/1.1/" 
xmlns:xlink="http://www.w3.org/1999/xlink" 
xsi:noNamespaceSchemaLocation="http://www.someSchemaLocation.xsd">

我要的是 xsi:noNamespaceSchemaLocation 的值。

我可以做到:

string blah = myXdocument.Root.GetNamespaceOfPrefix("xsi").NamespaceName;

,这将返回"http://www.w3.org/2001/XMLSchema-instance",如您所愿。

我尝试过:

string test = myXdocument.Root.Attribute("xsi" + "noNamespaceSchemaLocation").Value.ToString(); 

但是返回空值。

请问有什么主意吗?

1 个答案:

答案 0 :(得分:1)

blah投射到XNamespace

string test = myXdocument.Root.Attribute((XNamespace)blah + "noNamespaceSchemaLocation")
    .Value.ToString();
相关问题