Entwickler-Ecke
IO, XML und Registry - XML Blank Problem
PachN - Mo 14.02.11 22:53
Titel: XML Blank Problem
Hallo, ich bins nochmal :)
Ich hatte hier schonmal um Hilfe gebeten und mir wurde auch super toll geholfen.
http://www.c-sharp-forum.de/topic_XML+Attribute+Value+aendern_104078.html
Allerdings habe ich jetzt ein, sagen wir mal ganz spezielles Problem und ich habe nicht die leiseste Ahnung wie ich das weg bekomme.
XML Datei bearbeiten geht wie gesagt hervorragend.
Ausgangs XML sieht folgendermaßen aus:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <Database Version="702"> -<FilterFolder /> -<FilterFolder /> -<FilterFolder /> -<FavoriteFolder /> -<FavoriteFolder/> -<Song FilePath="C:\xxxxxxxxxxxxxxxx" FileSize="14705179"> --<Display Author="" Title="" Genre="" Year="" Color="" Cover="" Tag="" /> -</Song> </Database> |
Die - hab ich mit Absicht gemacht, sie sollen "Blanks" darstellen sodass man es besser erkennt.
Jetzt kommts nämlich :)
Die bearbeitet XML sieht dann jedoch so aus, obwohl ich, denk ich, nur den Value in "FilePath" ändere.
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <Database Version="702"> --<FilterFolder /> --<FilterFolder /> --<FilterFolder /> --<FavoriteFolder /> --<FavoriteFolder/> --<Song FilePath="C:\xxxxxxxxxxxxxxxx" FileSize="14705179"> ----<Display Author="" Title="" Genre="" Year="" Color="" Cover="" Tag="" /> --</Song> </Database> |
Und hier liegt der Fehler :(
Mein Drittprogramm, welches die XML verwendet meldet, dass die XML beschädigt sei und schuld daran sind die dazu gekommenen Blanks.
Wieso macht es hier Blanks dazu?
Wie bekomm ich die weg?
Hier noch zur Vervollständigung der Quellcode, welcher die XML ändert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| XDocument xmlDoc; xmlDoc = XDocument.Load(filePath);
foreach (XElement song in xmlDoc.Descendants("Song")) { XAttribute filePathAttribute = song.Attribute("FilePath"); if (filePathAttribute.Value == title) { string value = results[0]; filePathAttribute.Value = value; break; } }
xmlDoc.Save(filePath); |
Mach ich irgendwas falsch, dass die Blanks da rein kommen??
MfG PachN
Trashkid2000 - Di 15.02.11 07:53
Aber warum sollte denn die XML beschädigt sein, bloß weil dort die Einrückungen nicht mehr so schön sind?
Ich meine, das könnte auch alles in einer Zeile stehen, und wäre immer noch eine wohlgeformte XML. Zumal Du mit dem XDocument eigentlich auch nur "richtige" XML erstellen kannst, ansonsten knallt es schon davor.
Kann es sein, das in der Original-XML ein Schema angegeben ist (xsd) und Namespaces verwendet werden, die Du aber beim ändern nicht beachtet hast? Und die XML dann beim Einlesen gegen dieses Schema geprüft wird? Aber sehe bei den beiden XML (bis auf die Einrückungen) sowieso keine Unterschiede, auch nicht bei dem Attribut FilePath.
Marko
PachN - Di 15.02.11 11:48
Moin, keine Ahung warum das Programm das als Fehler ansieht.
Da kenn ich auch den Quelltext nicht.
Aber ich habe denke ich die Lösung gefunden, komm leider erst heute Abend dazu es "produktiv" zu testen.
Tausche diese Zeile:
C#-Quelltext
1:
| xmlDoc = XDocument.Load(filePath); |
gegen diese:
C#-Quelltext
1:
| xmlDoc = XDocument.Load(filePath, LoadOptions.PreserveWhitespace); |
und schon werden keine zusätzlichen Blanks gesetzt :)
Warum das defaultmässig gemacht wird müsste man wohl die Entwickler fragen.
Jedenfalls geht es jetzt.
Danke euch!
MfG PachN
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!