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