c# - Read cdata and html inside a tag by linqToXml -
i want rid of cdata , want read br tag. xml :
<body> <![cdata[ apple iphone är mycket mer än en mobil. den är en kombination av tre enheter: en revolutionerande mobiltelefon, en ipod widescreenformat och en banbrytande internetenhet. allt detta och mer därtill gör den till den bästa mobiltelefon du kan föreställa dig. ]]> <br/> <![cdata[ med de maskinvarufunktionerna iphone kombination med världens mest avancerade mobiloperativsystem öppnar apple möjligheter för vad en mobiltelefon kan göra. programmen är helt integrerade med varandra och kan synkroniseras med din dator - oavsett om du använder mac eller pc. från multi-touch-skärmen till det smarta tangentbordet och sensorerna. ]]> <br/> </body>
and here code :
public static list<string> getdescriptionxml(string iditem) { dictionary<string, string> dic = new dictionary<string, string>(); xdocument xdoc = xdocument.load(getdescription(iditem)); return (from doc in xdoc.elements("body") select doc.value).tolist(); }
when run value inside cdata without br tag! can br tag ?
the ultimate solution depends on possible cases html may contain. 1 possible solution :
..... return (from doc in xdoc.elements("body") select string.join(environment.newline, doc.nodes() .select(o => { if (o xcdata) return ((xcdata)o).value; else return o.tostring(); })) ).tolist();
this solution joins child nodes of <body>
line break. each child node, if cdata
section value taken string.join()
operation. else, if <br/>
or other cdata
entire markup taken.
in case want treat other child nodes type differently, can modify if ... else ...
part according needs.
Comments
Post a Comment