2009-08-07 7 views
1

私はこのような基本的なXMLファイルを持っています。私が欲しいものlinqを使用してxmlに埋め込まれたhtmlタグを取得します

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

、LINQを使用してリピーターにそれを表示するXMLのhtmlタグを含む全タイトル文字列を取得することです。 タイトルは問題なく取得できますが、<p>タグは削除されています。


title = item.Element("title").ToString()を使用すると、何とか動作しますが、すべてのxmlタグも取得します。つまり、タイトルはhtmlには表示されません。

私はすでに"<""&lt;"でエンコードしようとしましたが、これはxmlを読みにくくします。

CDATAとエンコード以外の方法はありますか?

乾杯 テリー

+0

XMLを手動で解析することを検討しますか? –

答えて

1

は、title要素からリーダーを作成し、InnerXmlプロパティをお読みください。

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

brunoに感謝の意を表しますが、残念ながらうまくいきませんでした。私はこれを私が使用しているlinq select文とどのように組み合わせるかの例を教えてください。 - テリー –

+0

私はコードを更新しました。あなたは完全な例を持っています。 –

+0

brunoに感謝、あなたは正しい方向に私を指摘しました。私のニーズに合わせるのに少し時間がかかりますが、今どこから始めたらいいか分かります。 –

0

XElement x = XElement.Parse(your xml);

var y = x.Descendants( "title")。子孫();

次に、タイトル要素の内容のリストをyに反復します。

BTW、LINQPad(http://www.linqpad.net)は、LINQ-XMLを試すための便利なツールです。

+0

こんにちはebpower、私はそれを試みたが、何とかそれを動作させることができませんでした。 LINQPadのヒントをありがとう、私はそれを忘れていた、私はそれを使用してからしばらくしていた。 –

+0

Hmm - 私はLINQPadウィンドウから貼り付けました。 XElement.Parseの "your xml"パラメータの代わりに、 "<p>some title</p>"を使用しました。 –

関連する問題