Mit C# XML verarbeiten, aber Whitespace innerhalb von Tags ignorieren
-
@SeboStone: Warum nicht? Wegen dem Whitespace?
Habe mir meine Codezeile nochmal angekuckt und verstehe eigentlich gar nicht warum das funktioniert.
Der Ausdruck
myNode.ChildNodes.Item(0)
gibt ein Objekt vom Typ XmlNode zurück, und wenn darauf die Eigenschaft "Value" angewendet wird, dann sollte eigentlich "null" zurück kommen.
Sehe ich das richtig?
-
Document.SelectSingleNode(".//BOOK[@ISBN='12345']");
Funktioniert aber nur wenn Du ISBN auch als Attribute benutzt, wie o.O. bereits beschrieben hat.
auch möglich um einfach nur durch alle iterieren:
foreach(XmlNode node in Document.SelectNodes(".//BOOK"))
{
}
-
wenn du die ISBN nicht als Attribut nehmen willst, was spricht dagegen, sie als Element zu verpacken??
<BOOK> <ISBN>5415464684 </ISBN> <BUY>1</BUY> </BOOK> <BOOK> <ISBN>464654</ISBN> <BUY>0</BUY> </BOOK> <BOOK> <ISBN>464646846</ISBN> <BUY>1</BUY> </BOOK>
-
Mhm naja es ist leider einfach so, dass ich keinen Einfluss darauf habe wie die xml-Datei aussieht.
Seid ihr dann quasi der Meinung, dass von Microsoft keine Möglichkeit vorgesehen wurde, den Text eines Elements auszugeben, wenn noch weitere Elemente darin verschachtelt sind?
-
Du hast Doch innerhalb Deiner Book-Node eine Node vom Typ XmlText, gefolgt von einer Node vom Typ XmlElement ("BUY"). In der Node vom Typ XmlText steht der Text vor dem Buy-Element.
Übrigens, was ist eigentlich wenn das Element so aussieht:
<BOOK> ISBN <BUY>1</BUY> 541541541541 </BOOK>
Immernoch gültig?
-
Gast349347 schrieb:
@SeboStone: Warum nicht? Wegen dem Whitespace?
Nein. Schau' mal hier: http://de.wikipedia.org/wiki/Extensible_Markup_Language da wird sehr gut beschrieben wie eine XML Datei aussehen muss. Das Problem bei Deinem XML liegt in der zweiten Zeile.
-
SeboStone schrieb:
Gast349347 schrieb:
@SeboStone: Warum nicht? Wegen dem Whitespace?
Nein. Schau' mal hier: http://de.wikipedia.org/wiki/Extensible_Markup_Language da wird sehr gut beschrieben wie eine XML Datei aussehen muss. Das Problem bei Deinem XML liegt in der zweiten Zeile.
Erläuter mal. Willst Du darauf hinaus, dass man im Tag-Inhalt nicht CDAta mit weiteren Tags mischen darf? Das wäre nämlich falsch:
http://www.w3.org/TR/REC-xml/#NT-content
(Mit einer Mixed-Elementdefinition, z.B "(#PCDATA|BUY)*")
Oder meinst Du, dass das Wurzelelement fehlt?
-
Nein, ich meine nicht das Wurzelelement, sondern:
<tag1> blabla <tag2> blubber </tag2> </tag1>
das müsste meiner Meinung nach entweder so:
<tag1> blabla </tag1> <tag2> blubber </tag2>
oder so:
<tag1 attrib="blabla"> <tag2> blubber </tag2> </tag1>
lauten. Wenn ich da falsch liege ist mir das neu.
-
SeboStone schrieb:
Wenn ich da falsch liege ist mir das neu.
Kennst Du XHTML?
<p> Dies ist <strong>korrektes</strong> <acronym>XHTML</acronym>! </p>
/EDIT: Wichtiger Nachtrag in diesem Zusammenhang: XHTML ist well-formed.
-
Ja kenne ich.