来自string的XDocument有一个元素,需要Dictionary

时间:2015-08-07 13:58:50

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

我有一个xmlString,我正在解析为XDocument:

xmlString = 
"<TestXml>" +
   "<Data>" +
      "<leadData>" +
        "<Email>testEmail@yahoo.ca</Email>" +
        "<FirstName>John</FirstName>" +
        "<LastName>Doe</LastName>" +
        "<Phone>555-555-5555</Phone>" +
        "<AddressLine1>123 Fake St</AddressLine1>" +
        "<AddressLine2></AddressLine2>" +
        "<City>Metropolis</City>" +
        "<State>DC</State>" +
        "<Zip>20016</Zip>" +
     "</leadData>" +
  "</Data>" +
"</TestXml>"

我将字符串解析为XDocument,然后尝试迭代节点:

XDocument xDoc = XDocument.Parse(xmlString);
Dictionary<string, string> xDict = new Dictionary<string, string>();

//Convert xDocument to Dictionary
foreach (var child in xDoc.Root.Elements())
{
      //xDict.Add();
}

这只会迭代一次,而且一次迭代似乎包含了所有数据。我意识到我做错了什么,但谷歌搜索后我不知道是什么。

2 个答案:

答案 0 :(得分:1)

在你的foreach循环中尝试xDoc.Root.Descendants()而不是xDoc.Root.Elements()

答案 1 :(得分:0)

您的 root 只有一个子数据,因此它只迭代一次

var xDict = XDocument.Parse(xmlString)
            .Descendants("leadData")
            .Elements()
            .ToDictionary(e => e.Name.LocalName, e => (string)e);