tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1332
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LieberNet LieberNet ist offline Mitglied Bronze
    Registriert seit
    Feb 2004
    Ort
    Wels
    Beiträge
    38
    Hallo
    Kann mir jemand bei meinem Problem helfen. Ich habe die Anforderung ein bestehendes XML File (UTF8 Coding) zu bearbeiten. Lt. MSN kann dazu eine neue Node mittels XmlDocument.CreateNode (NodeType,Name;NSURI) erstellt werden. Das funktioniert auch soweit. Eine Node wird angefügt. Allerdings steht am Ende der Node noch ein String xmlns="". Und dieser verursacht beim Lesen Probleme.
    Folgendes Format soll erstellt werden:
    <Property Name="DPLimit" Value="Default" />
    aber dieses wird erzeugt
    <Property Name="DPLimit" Value="Default" xmlns="" />
    Beim Ändern der Attribute Values funktioniert alles einwandfrei. Nur beim generieren von neuen Nodes geht das nicht.
    Hat hier jemand eine Idee woran es scheitert?
    Habe als NameSpaceURI schon null, "" oder Document.NameSpaceURI erfolglos probiert.

    Danke im vorraus
    Max
    Geändert von LieberNet (17.02.04 um 19:31 Uhr)
     

  2. #2
    drvj drvj ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Ort
    Oberursel bei Frankfurt a.M.
    Beiträge
    69
    Hallo,
    ich würde es mit XmlTextWriter machen.
    Codebeispiel:
    PHP-Code:
    XmlTextWriter xmlTextWriter null;

    xmlTextWriter = new XmlTextWriter("test.xml"Encoding.UTF8);

    xmlTextWriter.WriteStartDocument(true);

    xmlTextWriter.WriteStartElement("property");
    xmlTextWriter.WriteAttributeString("Name"" DPLimit");
    xmlTextWriter.WriteEndElement();

    xmlTextWriter.WriteEndDocument();
    xmlTextWriter.Close(); 
    text.xml
    PHP-Code:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <property Name="DPLimit">
    </property>

    mfg Jens
     

  3. #3
    LieberNet LieberNet ist offline Mitglied Bronze
    Registriert seit
    Feb 2004
    Ort
    Wels
    Beiträge
    38
    Hallo Jens
    Wenn ich ein neues XML Doc mache habe ich ja auch kein Problem. Ich MUSS leider in ein bestehendes XML File reinschreiben. Ich habe dazu mittels XML Document Class das gesamte XML File durchgeparst und mir die Daten rausgesammelt, die ich für mein Programm brauche (inklusive der xml node für das jeweilige Objekt). Wenn ich nun einem dieser Objekte eine neue Node hinzufügen möchte und das Document schlußendlich speichere, bekomme ich diesen zusätzlich String. Wird nur eines der Attributes geändert, funktioniert alles wunderbar. Irgendwie macht mir der Übergabeparameter NameSpaceURI in der XMLDoc.CreateNode () Funktion Probleme. Wenn Du nun in Dein bestehendes XML File versuchst eine neue Node einzufügen (ohne das File neu zu erstellen), hast Du vielleicht das gleiche Problem.

    Trotzdem Danke für die rasche Antwort
    Gruß
    Max
     

  4. #4
    Avatar von suny
    suny suny ist offline Mitglied
    Registriert seit
    Feb 2004
    Beiträge
    14
    Vorschlag
    Lade alle Daten raus in einen Stream, modiefziere den Stream und dann lösche File und erstelle im gegen Zug gleich neu. Das was du machen willst geht nicht wirklich ohne das File neuzuerstellen, weil ich kann zwischen "AB" kein C schieben ohne das File löschen.
    Da ich ja das B nach hintern schieben muss. Anderfalls zerstöre ich die XML-Struktur.

    So würde ich machen. Ich weiß das es nicht die feine Englische Art ist, aber ich lebe ja in Deutschland.

    Beispiel aus einem Buch:
    using System.Xml;
    using System.IO;

    XmlTextWriter xw = new XmlTextWriter(" DATEINAME.xml");
    xw.Formatting = Indented;
    xw.WriteStartDocument();
    xw.WriteStartElement(" Beispiel ");
    xw.Write(" Hallo Welt ");
    xw.WriteEndElement();
    xw.WriteEndDocument();

    so kannst du keinen xml-Fehler machen
    Geändert von suny (17.02.04 um 21:08 Uhr)
     

  5. #5
    LieberNet LieberNet ist offline Mitglied Bronze
    Registriert seit
    Feb 2004
    Ort
    Wels
    Beiträge
    38
    Das mache ich eigentlich auch schon so. Im Prinzip habe ich mein XML File im Speicher über das XmlDoc. Von diesem Doc sind die einzelnen Nodes an meine Objekte angeschlossen und an diese füge ich ganz einfach eine neue Node. Das sollte auch der Vorteil von xml sein. Ansonsten macht dieser XML Baum Aufbau ja keinen Sinn. Am Schluß wird das File so gesehen sowieso neu geschrieben -> über Doc.Save(Filename). Und genau hier wird mir dann diese Node "falsch" gespeichert. Dieses xmlns dachte ich sollte nur bei der Rootnode stehen. Das File über meine Daten selbst neu zu erstellen ist auf jeden Fall keine Alternative, da es sich hier um ca. 650 kB Daten handelt und diese im XML Baum ziemlich dynamisch abgelegt sind. Ich diese zwar sehr einfach über rekursive Aufrufe lesen, aber schreiben würde zu lange dauern!
     

  6. #6
    LieberNet LieberNet ist offline Mitglied Bronze
    Registriert seit
    Feb 2004
    Ort
    Wels
    Beiträge
    38
    Habe mein Problem endlich lösen können. Für alle die, die das Problem auch mal bekommen. Ich habe in meinem XML einen NameSpace vergeben. Dieser wird im XML bei der Rootnode angeführt. Nimmt man nun den NameSpaceURI des DOC wird ein zusätzlicher NameSpaceURI für die neue Node vergeben. Wenn ich aber den NamespaceUri der Rootnode an die neue Node anknüpfe, funktioniert wieder alles wunderbar.
     

Ähnliche Themen

  1. Speicherung von Wegpunkten
    Von Kipperlenny im Forum Coders Talk
    Antworten: 5
    Letzter Beitrag: 01.09.09, 22:21
  2. Speicherung der Session-ID
    Von serializable im Forum PHP
    Antworten: 6
    Letzter Beitrag: 15.06.08, 17:35
  3. IP-Adressen Speicherung legal?
    Von Dörti.Hermi im Forum Coders Talk
    Antworten: 3
    Letzter Beitrag: 09.03.08, 08:32
  4. XML Speicherung von Document
    Von b600forever im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 26.11.07, 11:02
  5. Probleme mit jpg Speicherung
    Von Wishmaster1978 im Forum Photoshop
    Antworten: 3
    Letzter Beitrag: 28.05.05, 02:21