Hallo,
ich stehe zur Zeit auf dem Schlauch. Ich habe eine XML Datei, die ist leider so vorgegeben (Das Beispiel ist dem Original nachgebaut) und kann leider nicht abgeändert werden.
Was will ich erreichen. Am liebsten ein Klasse erstellen in der ich via XmlSerializer, oder was auch immer, die XML einlese, bearbeiten kann und wieder speichern kann.
Nun habe ich die Tolle Funktion in Visual Studio gefunden, die mir aus einem XML in der Zwischenablage eine Klasse erstellt. So weit so gut. Das XML wird eingelesen. Aber wie kann ich z.B. via "For Each" alle Title auslesen? Und wie die Manipulierten Daten wieder in der gleichen XML Datei speichern. Die XML Datei muss danach genau so wieder ausschauen.
Oder sollte ich einen ganz anderen Weg gehen? Für Anregungen bin ich sehr dankbar.
Hier mal meine XMLTestdatei:
Die generierte Klasse:
Und zu guter letzt mein Code:
ich stehe zur Zeit auf dem Schlauch. Ich habe eine XML Datei, die ist leider so vorgegeben (Das Beispiel ist dem Original nachgebaut) und kann leider nicht abgeändert werden.
Was will ich erreichen. Am liebsten ein Klasse erstellen in der ich via XmlSerializer, oder was auch immer, die XML einlese, bearbeiten kann und wieder speichern kann.
Nun habe ich die Tolle Funktion in Visual Studio gefunden, die mir aus einem XML in der Zwischenablage eine Klasse erstellt. So weit so gut. Das XML wird eingelesen. Aber wie kann ich z.B. via "For Each" alle Title auslesen? Und wie die Manipulierten Daten wieder in der gleichen XML Datei speichern. Die XML Datei muss danach genau so wieder ausschauen.
Oder sollte ich einen ganz anderen Weg gehen? Für Anregungen bin ich sehr dankbar.
Hier mal meine XMLTestdatei:
XML-Quellcode
- <?xml version="1.0" standalone="yes"?>
- <XMLApp>
- <Title>
- <Name>Name 1</Name>
- <Manufacturer>Manufacturer 1</Manufacturer>
- <Notes>Notes 1</Notes>
- <Category>Category 1</Category>
- </Title>
- <Title>
- <Name>Name 2</Name>
- <Manufacturer>Manufacturer 2</Manufacturer>
- <Notes>Notes 2</Notes>
- <Category>Category 2</Category>
- </Title>
- <Title>
- <Name>Name 3</Name>
- <Manufacturer>Manufacturer 3</Manufacturer>
- <Notes>Notes 3</Notes>
- <Category>Category 3</Category>
- </Title>
- <Title>
- <Name>Name 4</Name>
- <Manufacturer>Manufacturer 4</Manufacturer>
- <Notes>Notes 4</Notes>
- <Category>Category 2</Category>
- </Title>
- <Title>
- <Name>Name 5</Name>
- <Manufacturer>Manufacturer 5</Manufacturer>
- <Notes>Notes 5</Notes>
- <Category>Category 1</Category>
- </Title>
- <PlatformFolder>
- <MediaType>Mediatype 1_1</MediaType>
- <Filename>Filename 1_1</Filename>
- <Name>Name 1</Name>
- </PlatformFolder>
- <PlatformFolder>
- <MediaType>Mediatype 2_1</MediaType>
- <Filename>Filename 2_1</Filename>
- <Name>Name 2</Name>
- </PlatformFolder>
- <PlatformFolder>
- <MediaType>Mediatype 2_2</MediaType>
- <Filename>Filename 2_2</Filename>
- <Name>Name 2</Name>
- </PlatformFolder>
- <PlatformFolder>
- <MediaType>Mediatype 3_1</MediaType>
- <Filename>Filename 3_1</Filename>
- <Name>Name 3</Name>
- </PlatformFolder>
- <PlatformFolder>
- <MediaType>Mediatype 4_1</MediaType>
- <Filename>Filename 4_1</Filename>
- <Name>Name 4</Name>
- </PlatformFolder>
- <PlatformFolder>
- <MediaType>Mediatype 5_1</MediaType>
- <Filename>Filename 5_1</Filename>
- <Name>Name 5</Name>
- </PlatformFolder>
- <PlatformFolder>
- <MediaType>Mediatype 5_2</MediaType>
- <Filename>Filename 5_2</Filename>
- <Name>Name 5</Name>
- </PlatformFolder>
- <PlatformCategory>
- <Name>Category 1</Name>
- <Notes>Category Descrition 3</Notes>
- </PlatformCategory>
- <PlatformCategory>
- <Name>Category 2</Name>
- <Notes>Category Descrition 3</Notes>
- </PlatformCategory>
- <PlatformCategory>
- <Name>Category 3</Name>
- <Notes>Category Descrition 3</Notes>
- </PlatformCategory>
- </XMLApp>
Die generierte Klasse:
VB.NET-Quellcode
- Public Class XMLApp
- ' HINWEIS: Für den generierten Code ist möglicherweise mindestens .NET Framework 4.5 oder .NET Core/Standard 2.0 erforderlich.
- '''<remarks/>
- <System.SerializableAttribute(),
- System.ComponentModel.DesignerCategoryAttribute("code"),
- System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True),
- System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=False)>
- Partial Public Class ApplicationName
- Private titleField() As ApplicationNameTitle
- Private platformFolderField() As ApplicationNamePlatformFolder
- Private platformCategoryField() As ApplicationNamePlatformCategory
- '''<remarks/>
- <System.Xml.Serialization.XmlElementAttribute("Title")>
- Public Property Title() As ApplicationNameTitle()
- Get
- Return Me.titleField
- End Get
- Set
- Me.titleField = Value
- End Set
- End Property
- '''<remarks/>
- <System.Xml.Serialization.XmlElementAttribute("PlatformFolder")>
- Public Property PlatformFolder() As ApplicationNamePlatformFolder()
- Get
- Return Me.platformFolderField
- End Get
- Set
- Me.platformFolderField = Value
- End Set
- End Property
- '''<remarks/>
- <System.Xml.Serialization.XmlElementAttribute("PlatformCategory")>
- Public Property PlatformCategory() As ApplicationNamePlatformCategory()
- Get
- Return Me.platformCategoryField
- End Get
- Set
- Me.platformCategoryField = Value
- End Set
- End Property
- End Class
- '''<remarks/>
- <System.SerializableAttribute(),
- System.ComponentModel.DesignerCategoryAttribute("code"),
- System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True)>
- Partial Public Class ApplicationNameTitle
- Private nameField As String
- Private manufacturerField As String
- Private notesField As String
- Private categoryField As String
- '''<remarks/>
- Public Property Name() As String
- Get
- Return Me.nameField
- End Get
- Set
- Me.nameField = Value
- End Set
- End Property
- '''<remarks/>
- Public Property Manufacturer() As String
- Get
- Return Me.manufacturerField
- End Get
- Set
- Me.manufacturerField = Value
- End Set
- End Property
- '''<remarks/>
- Public Property Notes() As String
- Get
- Return Me.notesField
- End Get
- Set
- Me.notesField = Value
- End Set
- End Property
- '''<remarks/>
- Public Property Category() As String
- Get
- Return Me.categoryField
- End Get
- Set
- Me.categoryField = Value
- End Set
- End Property
- End Class
- '''<remarks/>
- <System.SerializableAttribute(),
- System.ComponentModel.DesignerCategoryAttribute("code"),
- System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True)>
- Partial Public Class ApplicationNamePlatformFolder
- Private mediaTypeField As String
- Private filenameField As String
- Private nameField As String
- '''<remarks/>
- Public Property MediaType() As String
- Get
- Return Me.mediaTypeField
- End Get
- Set
- Me.mediaTypeField = Value
- End Set
- End Property
- '''<remarks/>
- Public Property Filename() As String
- Get
- Return Me.filenameField
- End Get
- Set
- Me.filenameField = Value
- End Set
- End Property
- '''<remarks/>
- Public Property Name() As String
- Get
- Return Me.nameField
- End Get
- Set
- Me.nameField = Value
- End Set
- End Property
- End Class
- '''<remarks/>
- <System.SerializableAttribute(),
- System.ComponentModel.DesignerCategoryAttribute("code"),
- System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True)>
- Partial Public Class ApplicationNamePlatformCategory
- Private nameField As String
- Private notesField As String
- '''<remarks/>
- Public Property Name() As String
- Get
- Return Me.nameField
- End Get
- Set
- Me.nameField = Value
- End Set
- End Property
- '''<remarks/>
- Public Property Notes() As String
- Get
- Return Me.notesField
- End Get
- Set
- Me.notesField = Value
- End Set
- End Property
- End Class
- End Class
Und zu guter letzt mein Code:
VB.NET-Quellcode
- Imports System
- Imports System.IO
- Imports System.Xml
- Imports System.Environment
- Imports XMLTest.XMLTest
- Module Program
- Sub Main(args As String())
- Console.WriteLine("XML_Read_Edit_Save_Test")
- Dim strXMLFile As String = "C:\PfadzurXMLDatei\testdata.xml"
- Dim objXML As New XMLApp
- Dim reader As New System.Xml.Serialization.XmlSerializer(GetType(XMLApp))
- Dim file As New System.IO.StreamReader(strXMLFile)
- objXML = CType(reader.Deserialize(file), XMLApp)
- End Sub
- End Module