我有一个要遍历的XML文档,它兼容SDMX。这是一个简短的示例:

<root>
    <csf:DataSet id="J10">
     <kf:Series>
       <value> 107.92
       </value>
     </kf:Series>
    </csf:DataSet>
</root>


但是,当我尝试在C#中使用Linq到Xml进行以下操作时,出现XmlException。

XElement dataset = document.Element("csf:DataSet");


异常文本为:
名称中不能包含':'字符,十六进制值0x3A。

我无法控制XML。关于如何克服这一点的任何想法?

最佳答案

var csf = XNamespace.Get("<csfNamespaceUri>");
document.Element(csf + "DataSet");


请注意,您必须指定csf名称空间的uri。一个完整的例子:

var doc = XDocument.Parse(@"
<root xmlns:csf=""http://tempuri.org/1"" xmlns:kf=""http://tempuri.org/2"">
    <csf:DataSet id=""J10"">
     <kf:Series>
       <value> 107.92
       </value>
     </kf:Series>
    </csf:DataSet>
</root>
");

var dataSet = doc.Descendants(XNamespace.Get("http://tempuri.org/1") + "DataSet").Single();

关于c# - 如何在XML标签中获取带有特殊字符的XElement,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4288424/

10-10 13:04