2009-08-07 12 views
1

Ich habe eine grundlegende XML-Datei, die so aussieht.Holen Sie HTML-Tags in XML eingebettet mit Linq

<root> 
    <item> 
     <title><p>some title</p></title> 
    </item> 
    ... 
    </root> 

Was ich will, ist die ganze Titelzeichenfolge mit dem HTML-Tag des xml mit Linq und Anzeigen es in einem Repeater zu bekommen. Ich kann den Titel ohne Problem bekommen, aber das <p> Tag wird entfernt.

Wenn ich
title = item.Element("title").ToString() verwende, funktioniert es irgendwie, aber ich bekomme auch alle XML-Tag - was bedeutet, dass der Titel nicht in HTML angezeigt wird.

Ich habe bereits versucht mit der "<" mit "&lt;" Codierung, aber dies zu tun macht das Xml schwer zu lesen.

Was wäre eine mögliche Lösung neben CDATA und Codierung?

Prost Terry

+0

würden Sie in Betracht ziehen, das XML manuell zu analysieren? –

Antwort

1

einen Leser aus dem Titelelement erstellen und InnerXml lesen:

static void Main(string[] args) 
    { 
     string xml = "<root><item><title><p>some title</p></title></item></root>"; 

     XDocument xdoc = XDocument.Parse(xml); 
     XElement te = xdoc.Descendants("title").First(); 
     using (XmlReader reader = te.CreateReader()) 
     { 
      if (reader.Read()) 
       title = reader.ReadInnerXml(); 
     } 
    } 
+0

danke bruno für den Vorschlag, leider hat es nicht funktioniert. Könnten Sie mir ein Beispiel geben, wie ich dies mit der linq select-Anweisung, die ich verwende, kombinieren würde? - Terry –

+0

Ich habe den Code aktualisiert. Sie haben ein vollständiges Beispiel. –

+0

danke bruno, du hast mich in die richtige richtung gezeigt. Ich werde ein wenig Zeit brauchen, um es an meine Bedürfnisse anzupassen, aber jetzt weiß ich, wo ich anfangen soll. –

0

XElement x = XElement.Parse (Ihr xml);

var y = x.Descendants ("Titel"). Descendants();

Dann iterieren Sie y für eine Liste der Inhalte der Titelelemente.

BTW, LINQPad (http://www.linqpad.net) ist ein praktisches kostenloses Tool zum Ausprobieren von LINQ-XML.

+0

Hi ebpower, das habe ich ausprobiert aber irgendwie konnte es nicht funktionieren. Danke für den Hinweis mit LINQPad, ich hatte es total vergessen, seit ich damit gearbeitet habe. –

+0

Hmm - ich habe aus meinem LINQPad-Fenster eingefügt. Ich habe "<p>einige Titel</p>" anstelle der "Ihre xml" Parameter XElement.Parse. –