تحميل بيانات XML (أزواج المفتاح / القيمة) في بنية البيانات

StackOverflow https://stackoverflow.com/questions/1477075

  •  16-09-2019
  •  | 
  •  

سؤال

لدي مصدر بيانات XML يحتوي على قائمة بأزواج المفتاح / القيمة. أبحث عن طريقة بسيطة لتحميل نفس البيانات في صفيف أو بعض هيكل البيانات الأخرى حتى أتمكن من البحث عن البيانات بسهولة. أستطيع أن أرتبطها إلى GridView مع بضع نقرات ولكني فشلت في العثور على طريقة واضحة لتحميلها في شيء ليس عنصر تحكم UI.

يبدو أن مصدر البيانات الخاص بي:

<SiteMap>
  <Sections>  
    <Section Folder="TradeVolumes" TabIndex="1" />
    <Section Folder="TradeBreaks" TabIndex="2" />
  </Sections>
</SiteMap>

أنا أرغب في تحميل أزواج القيمة الرئيسية (مجلد، TabIndex)

ما هي أفضل طريقة لتحميل البيانات؟

هل كانت مفيدة؟

المحلول

باستخدام LinQ إلى XML:

var doc = XDocument.Parse(xmlAsString);
var dict = new Dictionary<string, int>();
foreach (var section in doc.Root.Element("Sections").Elements("Section"))
{
    dict.Add(section.Attribute("Folder").Value, int.Parse(section.Attribute("TabIndex").Value));
}

تحصل على قاموس، وهو أساسا مجموعة من أزواج المفتاح / القيمة

نصائح أخرى

تحميلها في مجموعة بيانات مع وظيفة

.ReadXml(string path)

مع بياناتك، سيكون لديك مجموعة بيانات مع 2 طاولات:

Sections 

| section_id |
|------------|
| 0          |

Section

| Folder       | TableIndex | Section_Id | 
|----------------------------------------|
| TradeVolumes | 1          | 0          |
| TradeBreaks  | 2          | 0          |

يمكنك القيام بشيء من هذا القبيل، ويستند التعليمات البرمجية أدناه على جهاز XML الذي قمت بتضمينه في أسئلتك.

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

namespace SimpleTestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            string xmlFile = 

            @"<SiteMap>  <Sections><Section Folder=""TradeVolumes"" TabIndex=""1"" />    <Section Folder=""TradeBreaks"" TabIndex=""2"" />  </Sections></SiteMap>";
            XmlDocument currentDocument = new XmlDocument();
            try
            {
                currentDocument.LoadXml(xmlFile);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            string path = "SiteMap/Sections";
            XmlNodeList nodeList = currentDocument.SelectNodes(path);
            IDictionary<string, string> keyValuePairList = new Dictionary<string, string>();
            foreach (XmlNode node in nodeList)
            {
                foreach (XmlNode innerNode in node.ChildNodes)
                {
                    if (innerNode.Attributes != null && innerNode.Attributes.Count == 2)
                    {
                        keyValuePairList.Add(new KeyValuePair<string, string>(innerNode.Attributes[0].Value, innerNode.Attributes[1].Value));
                    }
                }
            }
            foreach (KeyValuePair<string, string> pair in keyValuePairList)
            {
                Console.WriteLine(string.Format("{0} : {1}", pair.Key, pair.Value));
            }
            Console.ReadLine();


        }
    }
}

استخدم Xmlserializer وتجعله في النوع الخاص بك. ثم استخدمه كما يمكن العثور على مثال DataSource مؤثر تماما هنا - http://msdn.microsoft.com/en-us/library/ms950721.aspx.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top