Thread Aus einer Xml ein XML Value als String lesen
(8 answers)
Opened by abs at 2013-07-29 13:46
Dein Problem ist halt das das eingebettete XML nicht entwertet ist. Wer immer das verzapft hat, hatte von XML nicht viel Ahnung.
Zu dem Zweck gibt es den Spezialtag "CDATA" <![CDATA[ .... ]]> Das sagt dem Parser das er alles innerhalb dieses Tags zu ignorieren ist. Man muss nur noch zusätzlich sicher gestellen, das im Entwerteten XML kein "]]>" steht. Das stellt man sicher, in dem man die drei Zeichen Aufteilt: "]]>" => "]]]><![CDATA[]>" Wenn du dir sicher bist, dass im eingebetteten XML kein "</property>" vorkommt kannst du diese Holzhammer Methode verwenden: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 # read XML file in $xml_string my $out=''; while($xml_string=~s!^(.*?<property>\s*)(<\?xml.+?>)(\s*</property>)!!s){ $out.=$1.'<![CDATA['; my ($in,$after)=($2,$3); $in=~s/\Q]]>\E/]]]><![CDATA[]>/gs; $out.=$in.']]>'.$after; } $xml_string=$out.$xml_string; $out=''; # parse XML $xml_string ... das sucht nach <property> <\?xml ... > </property> und ersetzt das durch <property> <![CDATA[<\?xml ... >]]> </property> Danach kannst du das XML normal parsen und "property" enthält einen String des eingebetteten XML. Sollte </property> vorkommen wird das ganze schwieriger, da man die XML-Verschachtelung auflösen muss. Man muss das XML partiell parsen. Last edited: 2013-07-29 21:22:42 +0200 (CEST) |