Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  xml mit vb.net 2005

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  xml mit vb.net 2005 (1909 mal gelesen)
Stelli1
Ehrenmitglied
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2010, Rasterdesign
MapGuide 6.5 - 2010
Oracle 9i,10g Enterprise
autodesk Topobase 2-2010
VS6, VS.net 2010

erstellt am: 09. Jul. 2007 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


inidatei.vb.txt

 
Hallo zusammen,

ich versuche gerade etwas mehr mit xml zu machen. Aus diesem Grunde habe ich mal ein Beispiel für mich gemacht um die Einstellungen für ein Programm in einer xml Datei zu speichern. Irgendwie erscheint mir das alles sehr umständlich oder ich mache es zu umständlich.

Code:
    Public Function SaveForm(ByVal WinForm As Form) As Boolean
        Dim IniDatei As XmlDocument
        Dim RootNode As XmlNode
        Dim Attr As XmlAttribute
        Dim FormsNode As XmlNode
        Dim NewFormNode As XmlNode
        Dim OldFormNode As XmlNode
        Dim WinStateNode As XmlNode
        Dim PosNode As XmlNode
        Dim SizeNode As XmlNode
        Dim NodeList As XmlNodeList
        Dim elem As XmlElement
        Dim FormFound As Boolean

        Dim FormName As String = WinForm.Name

        '  Dummy use for OldFormNode
        OldFormNode = Nothing

        IniDatei = New Xml.XmlDocument
        IniDatei.Load(vcst_Path & "\" & vcst_File)

        ' Get Forms Collection
        NodeList = IniDatei.GetElementsByTagName("Form")
        ' Auflistung durchsuchen
        For Each elem In NodeList
            ' Search for "Name" Attribute (Name of the Form)
            If elem.HasAttribute("Name") Then
                ' Read the value
                If elem.GetAttribute("Name") = FormName Then
                    ' If found then exit loop
                    OldFormNode = elem
                    FormFound = True
                    Exit For
                End If
            End If
        Next

        ' New Node for the form
        NewFormNode = IniDatei.CreateNode(Xml.XmlNodeType.Element, "", "Form", "")
        ' append Attributes
        Attr = IniDatei.CreateAttribute("Name")
        Attr.Value = FormName
        NewFormNode.Attributes.Append(Attr)
        Attr = IniDatei.CreateAttribute("Typ")
        Attr.Value = "FORM"
        NewFormNode.Attributes.Append(Attr)
        Attr = IniDatei.CreateAttribute("Caption")
        Attr.Value = WinForm.Text
        NewFormNode.Attributes.Append(Attr)

        ' Search the Parent Node (it's "Forms")
        NodeList = IniDatei.GetElementsByTagName("Forms")
        If NodeList.Count > 0 Then
            ' Formsnode found
            FormsNode = NodeList(0)
        Else
            ' Create the Forms Node
            NodeList = IniDatei.GetElementsByTagName("Startparameter")
            RootNode = NodeList(0)
            FormsNode = IniDatei.CreateNode(Xml.XmlNodeType.Element, "", "Forms", "")
            RootNode.AppendChild(FormsNode)
        End If

        If Not FormFound Then
            ' append new Formnode
            FormsNode.AppendChild(NewFormNode)
        Else
            ' replace the current node with the new node
            FormsNode.ReplaceChild(NewFormNode, OldFormNode)
        End If

        ' append the new values
        WinStateNode = IniDatei.CreateNode(Xml.XmlNodeType.Element, "", "Winstate", "")
        Attr = IniDatei.CreateAttribute("Value")
        Attr.Value = WinForm.WindowState
        WinStateNode.Attributes.Append(Attr)

        PosNode = IniDatei.CreateNode(Xml.XmlNodeType.Element, "", "Loacation", "")
        Attr = IniDatei.CreateAttribute("X")
        Attr.Value = WinForm.Location.X
        PosNode.Attributes.Append(Attr)
        Attr = IniDatei.CreateAttribute("Y")
        Attr.Value = WinForm.Location.Y
        PosNode.Attributes.Append(Attr)

        SizeNode = IniDatei.CreateNode(Xml.XmlNodeType.Element, "", "Size", "")
        Attr = IniDatei.CreateAttribute("Width")
        Attr.Value = WinForm.Size.Width
        SizeNode.Attributes.Append(Attr)
        Attr = IniDatei.CreateAttribute("Height")
        Attr.Value = WinForm.Size.Height
        SizeNode.Attributes.Append(Attr)

        ' append the valuenodes
        NewFormNode.AppendChild(WinStateNode)
        NewFormNode.AppendChild(PosNode)
        NewFormNode.AppendChild(SizeNode)
        ' save file
        IniDatei.Save(vcst_Path & "\" & vcst_File)
    End Function



Hab mal die Klasse auch als Textdatei angehängt.

- Da wäre ersten die Frage wie kann man das anders (einfacher) machen
- Wie kann man später um die Werte auszulesen am besten vorgehen

Es gibt doch da die Methode GetElementById zum auslesen der Tags.
- Wie kann man die Nutzbar machen

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 09. Jul. 2007 13:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Stelli1 10 Unities + Antwort hilfreich

Hallo Stelli,

wenn es dir nur um das Speichern von Einstellungen geht kannst du den My.Settings Namespase nutzen. Dieser ist dafür vorgesehen und bietet deshalb eine einfache Vorgehensweise und mehrere Vorteile.
Schau dir mal die Beschreibung und Erklärung aus der MSDN an.

Ich hoffe es ist das was du suchst!


------------------
Mfg Daniel

Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht
------------------
SolidWorks | API | Makro | Schulung | Freeware | Schuler Design Automation GmbH

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Ehrenmitglied
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2010, Rasterdesign
MapGuide 6.5 - 2010
Oracle 9i,10g Enterprise
autodesk Topobase 2-2010
VS6, VS.net 2010

erstellt am: 09. Jul. 2007 14:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Daniel,

schon mal herzlichen Dank für die Antwort.
Für mein Beispiel ist dein Hinweis bestimmt die bessere und einfachere Methode (Die ich auch noch nicht kannte).  Allerdings ging es mir grundsätzlich darum beliebige xml Dateien zu schreiben und vor allem auszulesen. Grundsätzlich klappt das schon. Ich kann mir nur nicht vorstellen das das so umständlich sein soll.

Hast du da noch einige Anregungen ?

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 09. Jul. 2007 15:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Stelli1 10 Unities + Antwort hilfreich

Hallo Wilfried,

wenn ich mir dein Beispiel (auf die Schnelle) anschaue, ist es soweit ok.
XML Dateien sind in VB.Net halt eine Ansammlung von Node, NodeList und Attributen.
Je nachdem was man benötigt und erreichen will, muss man mit diesen XML-Objekten arbeiten.

Es gibt jedoch auch die Möglichkeit Objekte direkt als XML zu speichern und zu lesen. Dafür kannst du dir mal meinen Tipp bei vb@rchiv anschauen.

Ansonsten ist XML Bearbeitung auch mit den XML-Objekten sehr praktisch, da diese immer einer gültigen Struktur gehorchen und diese in allgemeinen Funktionen sehr einfach ausgelesen, bzw. geschrieben werden können.
Zum Beispiel die NodeList mit einer For-Each-Schleife durchlaufen und man hat alle XML-Nodes einer Ebene. Das Ganze kann dann wie beim Auslesen des File-System rekursiv durchlaufen und schon hat man alles was in der XML steht.

------------------
Mfg Daniel

Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht
------------------
SolidWorks | API | Makro | Schulung | Freeware | Schuler Design Automation GmbH

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz