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)