Announcement

Collapse
No announcement yet.

Daten zu xml-Datei hinzufügen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten zu xml-Datei hinzufügen

    Hi zusammen,

    ich habe eine xml-Datei mit folgendem Inhalt:

    <?xml version="1.0" encoding="utf-16"?>
    <Lists>
    <Liste1>
    <Name="Hans Meier" Straße ="Musterstraße"/>
    </Liste1>
    </Lists>

    Diese würde ich nun gerne um weitere Daten erweitern:

    <?xml version="1.0" encoding="utf-16"?>
    <Lists>
    <Liste1>
    <Name="Hans Meier" Straße ="Musterstraße"/>
    </Liste1>
    <Liste2>
    <Name="Max Meier" Straße ="Demostraße"/>
    </Liste2>
    </Lists>

    Ich habe folgendes versucht:
    Code:
    Dim myDoc As Xml.XmlDocument = New Xml.XmlDocument
            myDoc.Load("BasisListe.xml")
            Dim root As XmlNode = myDoc.DocumentElement
            Dim myElement As XmlElement = myDoc.CreateElement("Liste2")
            Dim myString As XmlElement = myDoc.CreateElement("Name")
            myString.InnerXml = "Max"
            root.AppendChild(myElement)
            myElement.AppendChild(myString)
            myDoc.Save("NewList.xml")
    Dabei kommt aber

    <?xml version="1.0" encoding="utf-16"?>
    <Lists>
    <Liste1>
    <Name="Hans Meier" Straße ="Musterstraße"/>
    </Liste1>
    </Lists>
    <Name>
    <Liste2>Max</Liste2>
    </Name>

    raus.
    Könnte Ihr mir helfen? Ich stehe irgendwie aufm Schlauch

  • #2
    Wozu die Nummerierung der Liste-Tags? Wie willst du sinnvoll die Daten wieder einlesen?

    Des Weiteren ist dein Ausgangs-XML falsch. Auf den Elementtyp Name muss entweder ein Attribut folgen oder das Tag geschlossen werden
    Christian

    Comment


    • #3
      Hallo Christian,

      die Nummerierung hab ich nur im Beispiel. Ist sonst nicht vorhanden.
      Das Tag ist doch geschlossen: <Name="Hans Meier" Straße ="Musterstraße"/>

      Oder was meinst Du?

      Comment


      • #4
        Warum zeigt du hier Code, der so nicht existiert?

        <Name="Hans Meier" ist falsch. Name kann als TAG keinen Attributwert besitzen. Das sollte dir eigentlich jeder beliebige XML-Editor als Fehler anzeigen. Mögliche Lösung: <Name>Hans Meier</Name> oder <Name wert="Hans Meier"></Name>

        Für "wert" fällt mir kein sinnvoller Name ein
        Christian

        Comment


        • #5
          Hi,

          ich habe beide Listen nochmal korrigiert:
          Die Liste habe ich:

          <?xml version="1.0" encoding="utf-16"?>
          <Lists>
          <Liste>
          <Eintrag Name="Hans Meier" Straße ="Musterstraße"/>
          </Liste>
          </Lists>

          Es soll nun noch eine Liste hinzugefügt werden:

          <?xml version="1.0" encoding="utf-16"?>
          <Lists>
          <Liste>
          <Eintrag Name="Hans Meier" Straße ="Musterstraße"/>
          </Liste>
          <Liste>
          <Eintrag Name="Max Meier" Straße ="Demostraße"/>
          </Liste>
          </Lists>

          Meine Funktion:
          Dim myDoc As Xml.XmlDocument = New Xml.XmlDocument
          myDoc.Load("BasisListe.xml")
          Dim root As XmlNode = myDoc.DocumentElement
          Dim myElement As XmlElement = myDoc.CreateElement("Liste2")
          Dim myString As XmlElement = myDoc.CreateElement("Name")
          myString.InnerXml = "Max"
          root.AppendChild(myElement)
          myElement.AppendChild(myString)
          myDoc.Save("NewList.xml")

          fügt das Element aber falsch ein.
          Kannst Du mir helfen?

          micha

          Comment


          • #6
            myDoc.CreateElement("Liste2") ist falsch, weil du ja keine Nummern hast, warum soll da eine Nummer rein?
            myDoc.CreateElement("Name") ist falsch, weil Name kein Element/Tag ist, sondern ein Attribut...jedenfalls nach dem jetzigen XML
            Da du nur einer Liste neu hinzufügen willst, kann es auch nur ein AppendChild geben...Das wiederum muss ein Element "Liste" sein. Das wiederum bekommt ein Element "Eintrag" mit den Attributen Name und Straße. Es wird also eiin Element Liste erzeugt. Per AppendChild diesem ein Element Eintrag hinzufügen. Letztres bekomm die o.a. Attribute. Das erzeute Element Liste wird mit AppendChild dem Root hinzugefügt
            Christian

            Comment


            • #7
              Hi Christian,

              super, vielen Dank Hat funktioniert. Ich arbeite nicht sehr oft mit XML-Dokumenten.
              Gruß
              micha

              Comment

              Working...
              X