Объединить файлы xml в один и распарсить итог в таблицу - Visual Basic .NET
Формулировка задачи:
Задача - это некая идея фикс для меня, тем более очень для меня актуальна (нависает прям на до мной)) Поэтому решил попробовать решить ее на любимом VB.NET.
Есть куча таких файлов .xml (см. прицеп). Их нужно собрать в один файл, но при этом удалить определенный тег или несколько тегов (к примеру <id>.*</id>). А результат разпарсить в текстовик... по оставшимся тегам.
Сомневаюсь, что даже консольное приложение на VB.NET переварит в обозримые сроки большой объем таких файлов, особенно если каждый из них очень большой (по несколько метров). Но любопытно! Тем более ранее мне не приходилось работать в VB c xml... подучусь!
Решение задачи: «Объединить файлы xml в один и распарсить итог в таблицу»
textual
Листинг программы
Imports System.Text Imports System.Xml Imports System.Xml.Linq Imports System.Xml.XPath Sub Main Dim xmlSettings As New XmlWriterSettings() With { _ .Encoding = Encoding.GetEncoding(1251), _ .ConformanceLevel = ConformanceLevel.Document _ } Using writer As XmlWriter = XmlWriter.Create("d:\result.xml", xmlSettings) writer.WriteStartDocument() writer.WriteStartElement("journal") ' Перебираем все xml файлы в папке d:\folder For Each xmlPath In Directory.EnumerateFiles("d:\folder", "*.xml") ProcessXmlDocument(xmlPath, writer) Next writer.WriteEndElement() writer.WriteEndDocument() End Using End Sub Sub ProcessXmlDocument(xmlPath As String, writer As XmlWriter) Dim xDoc As XDocument = XDocument.Load(xmlPath) ' Удаляем ненужные элементы For Each xEl As XElement In xDoc.XPathSelectElements("/journal/MainTable/id") xEl.Remove() Next ' Копируем данные из узлов MainTable Using reader As XmlReader = xDoc.Root.CreateReader() reader.ReadToDescendant("MainTable") Do While reader.NodeType = XmlNodeType.Element AndAlso reader.Name = "MainTable" writer.WriteNode(reader, False) Loop End Using End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д