vb.net控制台应用程序合并未知数量的XML文件,添加到集合时出现问题

vb.net控制台应用程序合并未知数量的XML文件,添加到集合时出现问题,xml,vb.net,merge,array-merge,Xml,Vb.net,Merge,Array Merge,我正在尝试创建一个允许用户将文件拖放到控制台的应用程序。控制台通过中介将路径输入到XmlTextReaders集合中,这些集合依次在基于XmlReadercollection的for循环中填充DataSet集合。计数并最终合并整个内容。 在我尝试之前,一切都是美好的。将添加到XmlTextReader列表中,然后它以 我试过调查,但就是不明白。 我希望下面的代码包含了所有必要的信息 Imports System.Xml Module Module1 Sub Main()

我正在尝试创建一个允许用户将文件拖放到控制台的应用程序。控制台通过中介将路径输入到
XmlTextReader
s集合中,这些集合依次在基于
XmlReader
collection
的for循环中填充
DataSet
集合。计数
并最终合并整个内容。 在我尝试
之前,一切都是美好的。将
添加到
XmlTextReader
列表中,然后它以

我试过调查,但就是不明白。 我希望下面的代码包含了所有必要的信息

Imports System.Xml
Module Module1

    Sub Main()
        Dim input As String
        Dim nl As String = Environment.NewLine
        Dim xml_files As List(Of XmlTextReader)
        Dim xml_ds As List(Of DataSet)
        Dim ds_sum As DataSet

        Do While input <> "merge"
            Console.WriteLine("--- drag & drop file to  be merged---" + nl)
            input = Console.ReadLine()
            If input <> "merge" Then 
                Dim xml__ As New XmlTextReader(input)
                xml_files.Add(xml__) ' this is th plce that throws the exception 
                'xml_files.Add(New XmlTextReader(input))  something i tried
                Console.WriteLine(nl & "--- drag & drop new file or order  merge ---" & nl)
            ElseIf input = "merge" Then
                ' ▼ ▼ ▼ ▼  read datasets to collection ▼ ▼ ▼ ▼
                For i = 0 To xml_files.Count - 1
                    Dim ds As New DataSet ' mediator
                    ds.ReadXml(xml_files(i)) ' read one-by-one xml 
                    xml_ds.Add(ds) 'i ubacuje u kolekciju xml_ds
                Next
            End If
        Loop
        ' ▼ ▼ ▼ ▼ ovde sad ide XML MERGE ▼ ▼ ▼ ▼
        ds_sum = xml_ds(0)

        For i = 1 To xml_ds.Count
            ds_sum.Merge(xml_ds(i))
        Next
        ' ▼ ▼ ▼ ▼ ispis xml-a ▼ ▼ ▼ ▼
        Console.WriteLine(nl & "--- direktorijum u koji zelis da sacuvas sabrani XML Prevuci u terminal ---" & nl)
        input = Console.ReadLine()
        ds_sum.WriteXml(input)
    End Sub
End Module
Imports System.Xml
模块1
副标题()
将输入设置为字符串
Dim nl As String=Environment.NewLine
Dim xml_文件作为(XmlTextReader的)列表
Dim xml_ds As列表(数据集)
作为数据集的Dim ds_sum
输入“合并”时执行此操作
Console.WriteLine(“---要合并的拖放文件----”+nl)
input=Console.ReadLine()
如果输入“合并”,则
将xml作为新的XmlTextReader进行Dim(输入)
Add(xml_uu)'这是引发异常的plce
'xml_files.Add(新的XmlTextReader(输入))我尝试过的东西
Console.WriteLine(nl&“---拖放新文件或订单合并----”&nl)
ElseIf input=“merge”然后
' ▼ ▼ ▼ ▼  将数据集读取到集合▼ ▼ ▼ ▼
对于i=0到xml_files.Count-1
Dim ds作为新数据集的中介
ds.ReadXml(xml_文件(i))'逐个读取xml
xml_ds.Add(ds)'i ubacuje u kolekciju xml_ds
下一个
如果结束
环
' ▼ ▼ ▼ ▼ ovde sad ide XML合并▼ ▼ ▼ ▼
ds\u sum=xml\u ds(0)
对于i=1到xml\u ds.Count
ds_sum.Merge(xml_ds(i))
下一个
' ▼ ▼ ▼ ▼ ispis xml-a▼ ▼ ▼ ▼
Console.WriteLine(nl&“--direktorijum u koji zelis da sacuvas sabrani XML Prevuci u terminal--”和nl)
input=Console.ReadLine()
ds_sum.WriteXml(输入)
端接头
端模块
`

仅将xml_文件声明为可以包含XMLTextReader列表的对象。它不会初始化它。你可以直接打字

Dim xml_files As List(Of XmlTextReader) = New List(Of XmlTextReader)
它声明对象并为其分配一个新的初始化列表,但您可以编写

Dim xml_files As New List(Of XmlTextReader)

这就完成了完全相同的事情。

尝试将Dim xml_文件更改为列表(XmlTextReader)以Dim xml_文件更改为新列表(XmlTextReader)的可能重复。谢谢,这已经完成了技巧。感谢额外的解释,在更改我的代码后,整个过程按照我的预期进行。
Dim xml_files As New List(Of XmlTextReader)