我有一个要遍历的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/