ungewollte Strukturveränderung bei Bearb von xml verhindern

Babatune

Mitglied
Hallo zusammen,

ich hab ein Problem bei der Bearbeitung eines XML files mit C#

Das XML hat die Form:

<root>
<Personen>
<Person Name="Ba"/>
</Personen>
</root>

Ich bearbeite das File mit:

XmlDocument xd = new XmlDocument();
xd.Load(path);
XmlNode node = xd.SelectSingleNode("/root/Personen/Person");
node.Attributes["Name"].InnerText = "Bu";
xd.save(path);


Jetzt ist mein Problem dass die Struktur des Files dabei folgendermaßen verändert wird:
aus
<Person Name="Ba"/>
wird
<Person Name="Bu">
</Person>

Kann ich diese Erweiterung irgendwie verhindern? Ich muss das file danach noch mit einer festern Verarbeitungsmethode weiter verarbeiten und mit dieser Struktur ist das nicht mehr möglich.

viele Grüße,
Babatune
 
Hallo,

ich wüsste nicht, dass man das verhindern kann. Warum hat die nachfolgende Verarbeitungsmethode Probleme damit? Es ist doch valides XML.

Gruß
MCoder
 
Das Programm ist nicht von mir und ich hab auch nicht die Möglichkeit es zu bearbeiten.

Ich hab nun aber rausgefunden dass beim speichern eben
Code:
<Person Name = "ba"  ></Person>
zu
Code:
<Person Name = "ba" >
</Person>
wird, wobei ich hier nicht nur einen Zeilenumbruch haben, sondern der Zwischenraum mit einigen Leerzeichen befüllt wurde.

Da das Programm mit dem ich das File weiter bearbeiten muss hier aber keinen Eintrag erlaubt, und die Leerzeichen wohl als Eintrag aufgenommen werden bekomm ich den Fehler


Ich bin grad ein wenig ratlos, ob ich versuchen soll das xml auf eine andere Art und Weise bearbeiten soll, wo mir das vielleicht nicht passiert, oder ob es doch eine Formatierungsmöglichkeit gibt die diese Umstellung verhindert?
 
Aber das sieht ja so aus, als hätte das Nicht-von-dir-Programm einen Bug. Eventuell mal nach neuer Version suchen oder das Problem in dessen Forum diskutieren?
 
Habs jetzt so gemacht:

Code:
XmlDocument doc = new XmlDocument();

FileStream fsin = new FileStream(pathXMLIn,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);

doc.Load(fsin);

XmlWriterSettings writeSet = new XmlWriterSettings();
writeSet.Indent = true;
XmlWriter xmlWriter = XmlWriter.Create(pathXMLOut, writeSet);

doc.Save(xmlWriter);

so funktionierts jetzt auch endlich :)
 

Neue Beiträge

Zurück