Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#将xml导入listview_C#_Xml_Listview - Fatal编程技术网

C#将xml导入listview

C#将xml导入listview,c#,xml,listview,C#,Xml,Listview,首先,我是初学者,还在学C。 目前,我正在尝试构建一个应用程序,其中一个选项是将xml文件导入listview。 我需要导入的XML文件总是采用相同的格式。 我遇到的问题是,该xml文件的每个节点在一个节点中都有两个附加属性,当我将其导入listview时,它将以只读方式读取第一部分,直到到达新属性为止,该属性基本上是同一节点的一部分 下面是XML文档,我需要从中导入以下信息: 银行账户 客户名称 客户姓氏 订单号 返回ID 数量 地址 感谢您的帮助和建议。试试xml linq。您可以将list

首先,我是初学者,还在学C。 目前,我正在尝试构建一个应用程序,其中一个选项是将xml文件导入listview。 我需要导入的XML文件总是采用相同的格式。 我遇到的问题是,该xml文件的每个节点在一个节点中都有两个附加属性,当我将其导入listview时,它将以只读方式读取第一部分,直到到达新属性为止,该属性基本上是同一节点的一部分

下面是XML文档,我需要从中导入以下信息:

  • 银行账户
  • 客户名称
  • 客户姓氏
  • 订单号
  • 返回ID
  • 数量
  • 地址

  • 感谢您的帮助和建议。

    试试xml linq。您可以将listview数据源设置为datatable。使用datatable可以保留类型,并便于添加到控件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Xml;
    using System.Xml.Linq;
    
    namespace ConsoleApplication172
    {
        class Program
        {
            const string FILENAME = @"c:\temp\test.xml";
            static void Main(string[] args)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Bank account", typeof(string));
                dt.Columns.Add("Customer Name", typeof(string));
                dt.Columns.Add("Customer Surname", typeof(string));
                dt.Columns.Add("Order ID", typeof(long));
                dt.Columns.Add("Return ID", typeof(long));
                dt.Columns.Add("Amount", typeof(decimal));
                dt.Columns.Add("Address_1", typeof(string));
                dt.Columns.Add("Address_2", typeof(string));
                dt.Columns.Add("Post Code", typeof(string));
                dt.Columns.Add("City", typeof(string));
                dt.Columns.Add("Providence", typeof(string));
                dt.Columns.Add("Country", typeof(string));
    
                XDocument doc = XDocument.Load(FILENAME);
    
                foreach(XElement xReturn in doc.Descendants("RETURN"))
                {
                    dt.Rows.Add(new object[] {
                        (string)xReturn.Descendants("CUSTOMER_BANK_ACCOUNT").FirstOrDefault(),
                        (string)xReturn.Element("CUSTOMER_NAME"),
                        (string)xReturn.Element("CUSTOMER_SURNAME"),
                        (long)xReturn.Element("ORDER_ID"),
                        (long)xReturn.Element("RETURN_ID"),
                        (string)xReturn.Element("RETURN_AMOUNT"),
                        (string)xReturn.Descendants("ADDRESS_LINE_1").FirstOrDefault(),
                        (string)xReturn.Descendants("ADDRESS_LINE_2").FirstOrDefault(),
                        (string)xReturn.Descendants("POST_CODE").FirstOrDefault(),
                        (string)xReturn.Descendants("CITY").FirstOrDefault(),
                        (string)xReturn.Descendants("PROVINCE").FirstOrDefault(),
                        (string)xReturn.Descendants("COUNTRY").FirstOrDefault()
                    });
                }
            }
        }
    }
    

    非常感谢你的帮助。
    foreach (XmlNode xmlNode in doc.SelectNodes("//RETURN"))
    {
        
        XmlNode node1 = doc.SelectSingleNode("RETURN_POD_EXPORT_INFO/RETURNS/RETURN/BANK/CUSTOMER_BANK_ACCOUNT");
        string bank = node1.InnerText;
        XmlNode node2 = doc.SelectSingleNode("RETURN_POD_EXPORT_INFO/RETURNS/RETURN/CUSTOMER_NAME");
        string name = node2.InnerText;
        XmlNode node3 = doc.SelectSingleNode("RETURN_POD_EXPORT_INFO/RETURNS/RETURN/CUSTOMER_SURNAME");
        string surname = node3.InnerText;
        XmlNode node4 = doc.SelectSingleNode("RETURN_POD_EXPORT_INFO/RETURNS/RETURN/ORDER_ID");
        string orderid = node4.InnerText;
        XmlNode node5 = doc.SelectSingleNode("RETURN_POD_EXPORT_INFO/RETURNS/RETURN/RETURN_ID");
        string returnid = node5.InnerText;
        XmlNode node6 = doc.SelectSingleNode("RETURN_POD_EXPORT_INFO/RETURNS/RETURN/RETURN_AMOUNT");
        string amount = node6.InnerText;
        XmlNode node7 = doc.SelectSingleNode("RETURN_POD_EXPORT_INFO/RETURNS/RETURN/ADDRESS/CITY");
        string city = node7.InnerText;
        
        ListViewItem item = new ListViewItem(bank);
        item.SubItems.Add(name + " " + surname);
        item.SubItems.Add(city);
        item.SubItems.Add("ONLINE POVRAT");
        item.SubItems.Add(orderid);
        item.SubItems.Add(amount);
        item.SubItems.Add(returnid);
        
        listView1.Items.Clear();
        listView1.Items.Add(item);
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Xml;
    using System.Xml.Linq;
    
    namespace ConsoleApplication172
    {
        class Program
        {
            const string FILENAME = @"c:\temp\test.xml";
            static void Main(string[] args)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Bank account", typeof(string));
                dt.Columns.Add("Customer Name", typeof(string));
                dt.Columns.Add("Customer Surname", typeof(string));
                dt.Columns.Add("Order ID", typeof(long));
                dt.Columns.Add("Return ID", typeof(long));
                dt.Columns.Add("Amount", typeof(decimal));
                dt.Columns.Add("Address_1", typeof(string));
                dt.Columns.Add("Address_2", typeof(string));
                dt.Columns.Add("Post Code", typeof(string));
                dt.Columns.Add("City", typeof(string));
                dt.Columns.Add("Providence", typeof(string));
                dt.Columns.Add("Country", typeof(string));
    
                XDocument doc = XDocument.Load(FILENAME);
    
                foreach(XElement xReturn in doc.Descendants("RETURN"))
                {
                    dt.Rows.Add(new object[] {
                        (string)xReturn.Descendants("CUSTOMER_BANK_ACCOUNT").FirstOrDefault(),
                        (string)xReturn.Element("CUSTOMER_NAME"),
                        (string)xReturn.Element("CUSTOMER_SURNAME"),
                        (long)xReturn.Element("ORDER_ID"),
                        (long)xReturn.Element("RETURN_ID"),
                        (string)xReturn.Element("RETURN_AMOUNT"),
                        (string)xReturn.Descendants("ADDRESS_LINE_1").FirstOrDefault(),
                        (string)xReturn.Descendants("ADDRESS_LINE_2").FirstOrDefault(),
                        (string)xReturn.Descendants("POST_CODE").FirstOrDefault(),
                        (string)xReturn.Descendants("CITY").FirstOrDefault(),
                        (string)xReturn.Descendants("PROVINCE").FirstOrDefault(),
                        (string)xReturn.Descendants("COUNTRY").FirstOrDefault()
                    });
                }
            }
        }
    }