【问题标题】:XDocument does not load Xml string properlyXDocument 无法正确加载 Xml 字符串
【发布时间】:2014-06-30 21:05:42
【问题描述】:

我正在尝试执行以下操作:将 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);
}

【问题讨论】:

    标签: c# xml linq-to-xml


    【解决方案1】:

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

    var ns = "http://schemas.microsoft.com/2003/10/Serialization/Arrays";
    
    var elements = xdoc.Descendants(ns + "KeyValueOfstringint");
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多