У меня есть файл XML, который я пытаюсь прочитать и переписать (для последующих манипуляций) в новый текстовый файл с помощью vb.net.
Я могу успешно прочитать XML и распечатать его, но у меня возникают проблемы с правильным определением начального и конечного тегов каждого элемента/атрибута.
Я использую xmlNodeReader для чтения документа, получая имя и значение каждого чтения. Затем выберите случай с xmlNodeType.Element
или xmlNodeType.EndElement
Как мне получить правильную логику для решения этой проблемы, поскольку некоторые строки XML имеют форму <Server Type="PropertyDefinitions">
, а другие - форму <Server Type="aServerName"/>
Среди прочего я пробовал цикл if для endEntity
, но, похоже, ничего не сработало. Вот (часть) моего кода, который показывает функцию чтения и записи. Если я не предоставил достаточно информации, пожалуйста, дайте мне знать.
Dim reader As XmlNodeReader = New XmlNodeReader(document)
Dim result As New StringBuilder
While reader.Read
Select Case reader.NodeType
Case XmlNodeType.Element
result.Append("<" & reader.Name)
If reader.HasAttributes Then
While reader.MoveToNextAttribute()
result.Append(" " + reader.Name + "=" + Chr(34) + reader.Value + Chr(34))
End While
If XmlNodeType.EndEntity Then
result.Append("/>")
End If
Else
If XmlNodeType.Entity Then
result.Append(">")
ElseIf XmlNodeType.EndEntity Then
result.Append("/>")
End If
End If
Case XmlNodeType.EndElement
result.Append("</" + reader.Name + ">")
End Select
End While
Пример образца XML, который показывает 3 различных типа тегов:
<DocumentSMG Version="6.900000" VersionSeemage="6.12.0.2428">
<Server Type="PropertyDefinitions">
<MetaProperties>
</MetaProperties>
</Server>
<Server Type="aServerType1">
<BOM.Sort.Ascendant Value="1"/>
</Server>
<Server Type="aServerType2"/>
<Server Type="aServerType3"/>
</DocumentSMG>