XDocument没有正确加载Xml字符串

时间:2014-06-30 21:05:43

标签: c# xml linq-to-xml

我正在尝试执行以下操作:将Xml字符串加载到XDocument对象中,但是当我尝试通过Descendants方法访问元素时,当我尝试查看其值时,它不会返回任何内容Visual Studio中的内部元素它不会将它识别为Xml,那么这里的问题是什么?

string xml = @"<ArrayOfKeyValueOfstringint xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">
  <KeyValueOfstringint>
    <Key>crscmprsn_ttlprt1</Key>
    <Value>1</Value>
  </KeyValueOfstringint>
  <KeyValueOfstringint>
    <Key>ptntmntrfrm_ttlprt1</Key>
    <Value>1</Value>
  </KeyValueOfstringint>
</ArrayOfKeyValueOfstringint>";

var xdoc = XDocument.Parse(xml);
IEnumerable<XElement> elements = xdoc.Descendants("KeyValueOfstringint");

var lst = new List<KeyValuePair<string,int>>();

foreach (var item in elements)
{
    var k = item.Element("Key").Value;
    int v = int.Parse(item.Element("Value").Value);
    var kvp = new KeyValuePair<string,int>(k,v);
    lst.Add(kvp);
}

debugger visualizer

1 个答案:

答案 0 :(得分:2)

您需要指定命名空间来获取元素:

var ns = "http://schemas.microsoft.com/2003/10/Serialization/Arrays";

var elements = xdoc.Descendants(ns + "KeyValueOfstringint");

有关xml命名空间的更多信息,请查看:Working with XML Namespaces