如何从C#中的文件夹中选择所有xml文件并解析它们

埃尔文无所谓

大约一个月前,我遇到了将现有XML文件中的值获取到我的C#程序中的问题。
我在stackoverflow中尝试了许多不同的答案,但这并不是我真正需要的。
我想分享我在这里找到的解决方案,这样可以帮助面临其他类似问题的其他人。

埃尔文无所谓

我已经解决了这个问题,但想与您分享这个解决方案。

注意:这仅适用于内容相同的xml文件。

让我告诉你我如何解决它:

第一步:我已经按照xml文件中的xml结构创建了一个类

[XmlRoot("Data")]
public class Data
{
    [XmlElement("Msg")]
    public Msg Msgs { get; set; }
}


public class Msg
{
    [XmlElement]
    public string Type { get; set; }
    [XmlElement]
    public string UserID { get; set; }
    [XmlElement]
    public string SerialNumber { get; set; }
    [XmlElement]
    public string DateTime { get; set; }
    [XmlElement("Rows")]
    public Rows RowsObj { get; set; }
}
public class Rows
{

    [XmlElement("Row")]
    public List<Row> RowsList { get; set; }
}

public class Row
{
    [XmlElement]
    public string InvoiceCode { get; set; }
    [XmlElement]
    public string ServiceCode { get; set; }
    [XmlElement]
    public string BranchID { get; set; }
    [XmlElement]
    public string AbonCode { get; set; }
    [XmlElement]
    public string Amount { get; set; }
    [XmlElement]
    public string PaymentDate { get; set; }
    [XmlElement]
    public string ReceiptNumber { get; set; }
    [XmlElement]
    public string PaymentSite { get; set; }
    [XmlElement]
    public string PaymentInstrument { get; set; }
    [XmlElement]
    public string BankHeadOfficeCode { get; set; }
}

这是我的.xml文件结构

<?xml version="1.0" encoding="utf-8"?>
<Data>
  <Header/>
  <Msg>
    <Type>INVOICE_PAY_APUS</Type>
    <UserID>888888</UserID>
    <SerialNumber>8210089</SerialNumber>
    <DateTime>2015-04-15T15:20:17</DateTime>
    <Rows>
        <Row>
            <InvoiceCode>1414016335DR</InvoiceCode>
            <BranchID>981008</BranchID>
            <AbonCode>1414016335</AbonCode>
            <Amount>80.00</Amount>
            <PaymentDate>2015-04-15T15:20:03</PaymentDate>
            <ReceiptNumber>95037101</ReceiptNumber>
            <PaymentSite>GPP</PaymentSite>
            <PaymentInstrument>4</PaymentInstrument>
            <BankHeadOfficeCode>qwerty</BankHeadOfficeCode>
        </Row>
        <Row>
            <InvoiceCode>1414016335XH</InvoiceCode>
            <BranchID>981005</BranchID>
            <AbonCode>1414016335</AbonCode>
            <Amount>34.00</Amount>
            <PaymentDate>2015-04-15T15:20:03</PaymentDate>
            <ReceiptNumber>95037103</ReceiptNumber>
            <PaymentInstrument>4</PaymentInstrument>
            <PaymentSite>GPP</PaymentSite>
            <BankHeadOfficeCode>AZRTAZ22</BankHeadOfficeCode>
        </Row>
    </Rows>
  </Msg>
</Data>

如您所见,我Data下方有一个称为DataMsg的根元素

第二步:

在控制台应用程序的主类中,我试图到达放置xml文件的文件夹,然后,我从xml中读取数据并将其解析为对象。

class Program
{
    static void Main(string[] args)
    {



        string mainPath = "C:\\xmlTest"; //folder with my xml files goes here, it's optional, you can change it to whatever you want
        Data data = new Data();

        foreach (string file in Directory.EnumerateFiles(mainPath, "*.xml"))
        {
            XmlSerializer mySerializer = new XmlSerializer(typeof(Data));
            StreamReader streamReader = new StreamReader(file);

            data = (Data)mySerializer.Deserialize(streamReader);
            streamReader.Close();
            List<Row> rows = data.Msgs.RowsObj.RowsList;

            foreach (var row in rows)
                    {
                        //do stuff here
                        //example: string paymentType = row.InvoiceCode.Substring(row.InvoiceCode.Length - 2);
                    }



        }
    }
}

就是这样,希望对您有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Java读取文件夹中的所有文件?

如何列出tomcat文件夹中的所有文件?

如何导入文件夹中的所有文件?

如何连接文件夹中的所有JS文件?

如何列出文件夹中的所有文件然后选择多个文件

如何随机读取文件夹中的所有文件

如何删除所有文件/文件夹,但将根文件夹保留在C#中

C#返回位于其中具有文件夹的目录中的所有文件

如何查询以选择Android中特定文件夹中的所有文件?

如何访问主文件夹中的所有文件?

Android没有从values文件夹中选择正确的dimens.xml文件

如何使用C#中的所有权限在C目录中创建文件夹?

如何删除文件夹XXX中的所有文件

如何忽略所有`misc.xml`文件,但仅当它们位于Subversion中名为.idea的文件夹中时?

如何从文件夹中删除所有文件?

如何获取远程文件夹名称,选择它们并在C#中将其删除?

如何选择/复制文件夹1中名称与其他文件夹2中的其他文件夹匹配的所有文件夹

Python:解析文件夹中的所有文件

如何获取该文件夹中的所有文件

从文件夹中选择所有文件 - Python

如何从树视图中选择文件夹并将文件名显示到列表框 C#?

C# - 如何检查文件夹中的所有文件是否具有特定扩展名

在文件夹中选择具有名称的特定文件,然后操作它们(Python)

在 C# 中复制除某些文件夹和文件之外的所有文件夹

C# sharepoint 循环遍历文件夹和所有子文件夹中的所有文件

如何使用 tkinter 在 python 中选择多个文件或整个文件夹(它包含的所有文件的显示名称)?

如何选择位于文件夹或子文件夹下的所有js文件

使用 C# 在线列出 Sharepoint 上文件夹中的所有文件

如何删除某个文件夹中的所有文件