簡體   English   中英

基於父節點和子節點的XML字典

[英]Dictionary from XML based on parent and child nodes

我用WPF編寫了一個應用程序,並且具有以下XML:

<NewDataSet>
  <EYE>
    <DAD>Blue</DAD>
    <MOM>Brown</MOM>
  </EYE>
  <HAIR>
    <DAD>Black</DAD>
    <MOM>Brown</MOM>
  </HAIR>
  <SKIN>
    <DAD>White</DAD>
    <MOM>White</MOM>
  </SKIN>
</NewDataSet>

我想將XML讀入字典,因此,如果選擇讀取“ DAD”數據,我將得到:

public Dictionary<string, string> values = new Dictionary<string, string>()
{
    {"EYE", Blue},
    {"HAIR", Black},
    {"SKIN", White}
};

有可能嗎?如果可以,我可以給誰做? 任何代碼段都將非常有幫助。

這真的很簡單:

    var xd = XDocument.Parse(@"<NewDataSet>
  <EYE>
    <DAD>Blue</DAD>
    <MOM>Brown</MOM>
  </EYE>
  <HAIR>
    <DAD>Black</DAD>
    <MOM>Brown</MOM>
  </HAIR>
  <SKIN>
    <DAD>White</DAD>
    <MOM>White</MOM>
  </SKIN>
</NewDataSet>");

Dictionary<string, string> values =
    xd
        .Root
        .Elements()
        .ToDictionary(
            xe => xe.Name.LocalName,
            xe => xe.Element("DAD").Value);

使用xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string xml =
                "<NewDataSet>" +
                    "<EYE>" +
                       "<DAD>Blue</DAD>" +
                       "<MOM>Brown</MOM>" +
                    "</EYE>" +
                    "<HAIR>" +
                       "<DAD>Black</DAD>" +
                       "<MOM>Brown</MOM>" +
                    "</HAIR>" +
                    "<SKIN>" +
                       "<DAD>White</DAD>" +
                       "<MOM>White</MOM>" +
                    "</SKIN>" +
                "</NewDataSet>";

            XElement dataset = XElement.Parse(xml);

            Dictionary<string, string> dadDict = dataset.Elements()
                .GroupBy(x => x.Name.LocalName, y => (string)y.Element("DAD"))
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM