第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

XML 填充數(shù)據(jù)表

XML 填充數(shù)據(jù)表

C#
梵蒂岡之花 2022-01-16 10:37:49
我正在從給定的 xml 文件創(chuàng)建一個(gè) DataTable。我查看了其他資源和類(lèi)似的問(wèn)題,但仍然卡在同一個(gè)地方。我想根據(jù)我的 xml 輸入文件填充一個(gè)表,使其看起來(lái)像這樣:表輸出我已經(jīng)到了正確插入DataColumns并且沒(méi)有的地步。行數(shù)基于row_no我的問(wèn)題在嘗試從元素中添加值時(shí)出現(xiàn)bomrow我不確定如何填充這些行,我一直只得到一列,要么在列部分或行部分中分開(kāi)。到目前為止,這是我的代碼:using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Xml;using System.Xml.Linq;class Program{    static IEnumerable<XElement> headerLabels(string xmlFile)    {        using (XmlReader reader = XmlReader.Create(xmlFile))        {            reader.MoveToContent();            while (!reader.EOF)            {                if (reader.NodeType == XmlNodeType.Element && reader.Name == "bomcol")                {                    XElement el = XElement.ReadFrom(reader) as XElement;                    if (el != null)                        yield return el;                }                else                    reader.Read();            }        }    }    static IEnumerable<XElement> rowValues(string xmlFile)    {        using (XmlReader reader = XmlReader.Create(xmlFile))        {            reader.MoveToContent();            while (!reader.EOF)            {                if (reader.NodeType == XmlNodeType.Element && reader.Name == "bomcell")                {                    XElement el = XElement.ReadFrom(reader) as XElement;                    if (el != null)                        yield return el;                }                else                    reader.Read();            }        }    }    
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

嘗試 xml linq :


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;

using System.Xml.Linq;

using System.Data;


namespace ConsoleApplication1

{

    class Program

    {

        const string FILENAME = @"c:\temp\test.xml";

        static void Main(string[] args)

        {

            DataTable dt = new DataTable();


            dt.Columns.Add("ITEM NO.", typeof(int));

            dt.Columns.Add("ITEMCODE", typeof(string));

            dt.Columns.Add("PARTNUMBER.", typeof(string));

            dt.Columns.Add("DESCRIPTION", typeof(string));

            dt.Columns.Add("QTY.", typeof(int));


            XDocument doc = XDocument.Load(FILENAME);


            foreach (XElement bomrow in doc.Descendants("bomrow"))

            {

                dt.Rows.Add(new object[] {

                    bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 0).FirstOrDefault() == null ?

                        null : (int?)bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 0).FirstOrDefault().Attribute("value"),

                    bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 1).FirstOrDefault() == null ?

                        null : (string)bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 1).FirstOrDefault().Attribute("value"),

                    bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 2).FirstOrDefault() == null ?

                        null : (string)bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 2).FirstOrDefault().Attribute("value"),

                    bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 3).FirstOrDefault() == null ?

                        null : (string)bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 3).FirstOrDefault().Attribute("value"),

                    bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 4).FirstOrDefault() == null ?

                       null : (int?)bomrow.Elements("bomcell").Where(x => (int)x.Attribute("col_no") == 4).FirstOrDefault().Attribute("value")

                });

            }

        }

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-01-16
?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

根據(jù) jdweng 的回答構(gòu)建:


foreach(XElement bomheader in doc.Descendants("bomheader"))

        {

            dt.Columns.Add(

                bomheader.Elements("bomcol").Where(x => (int)x.Attribute("col_no") == 0).FirstOrDefault() == null ?

                   null : "ITEM NO."

                    );

            dt.Columns.Add(

                bomheader.Elements("bomcol").Where(x => (int)x.Attribute("col_no") == 1).FirstOrDefault() == null ?

                   null : "ITEMCODE"

                );

            dt.Columns.Add(

                bomheader.Elements("bomcol").Where(x => (int)x.Attribute("col_no") == 2).FirstOrDefault() == null ?

                    null : "PARTNUMBER"

                );

            dt.Columns.Add(

                bomheader.Elements("bomcol").Where(x => (int)x.Attribute("col_no") == 3).FirstOrDefault() == null ?

                    null : "DESCRIPTION"

                );

            dt.Columns.Add(

                bomheader.Elements("bomcol").Where(x => (int)x.Attribute("col_no") == 4).FirstOrDefault() == null ?

                    null : "QTY."

                    );

        }

這將確保無(wú)論 bomcol 值的輸入(或缺少輸入)如何,表列都將正確設(shè)置為默認(rèn)值。由于 col_no 是唯一重要且可靠的信息,因此這也可以解決列亂序問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2022-01-16
?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以像這樣使用 DataSet 解決您的問(wèn)題(這不是一個(gè)漂亮的解決方案,但它有效;):


 static void Main(string[] args)

    {

        DataTable dt = new DataTable("Items");

        string xmlFile = @"new.xml";


        DataSet ds = new DataSet();

        ds.ReadXml(xmlFile);


        foreach (DataRow rowCol in ds.Tables["bomcol"].Rows)

        {

            dt.Columns.Add(rowCol.ItemArray[2].ToString());

        }


        DataRow dr = dt.Rows.Add();

        for (int j = 0; j < ds.Tables["bomcell"].Rows.Count; j++)

        {


            var i = j % 5;

            if (i == 0 && j != 0)

            {

                dr = dt.Rows.Add();

            }


            dr[dt.Columns[i]] = ds.Tables["bomcell"].Rows[j].ItemArray[1];

        }


        Console.WriteLine("Rows: " + dt.Rows.Count);

        Console.WriteLine("Cols: " + dt.Columns.Count);

        DataColumnCollection cols = dt.Columns;

        foreach (DataColumn col in cols)

        {

            Console.Write(cols[0] + "\t");

        }


        foreach (DataRow row in dt.Rows)

        {

            Console.WriteLine();

            Console.Write(row.ItemArray[0] + "\t\t" + row.ItemArray[1] + "\t\t" + row.ItemArray[2] + "\t\t" + row.ItemArray[3] + "\t\t" + row.ItemArray[4] + "\t");

        }


        Console.ReadLine();

    }


查看完整回答
反對(duì) 回復(fù) 2022-01-16
  • 3 回答
  • 0 關(guān)注
  • 155 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)