2017-06-10 8 views
3

から
を削除します。私のXMLは次のようになりますXMLNodeの

<div> 
    <p> 
     First Text 
     <br/> 
     Second Text 
    </p> 
</div> 

次のコードですべてのノードを経由し、XMLファイルをロード:

XmlDocument doc = new XmlDocument(); 
doc.Load(filepath); 

foreach (XmlNode row in doc.SelectNodes("/div/p")) 
{ 
    string subtext = row.InnerText; 
    richtextbox.AppendText(subtext + "\n"); 
} 

結果は、常にこのようになります。 :

First TextSecond Text 

ここで明らかな問題は、最初の012との間にスペース(または改行)がないことですセカンドテキストですから、<br/>をスペース/改行に置き換える方法はありますか?

+1

'XMLDocument.Load'がどのようにこれを解析しようとしているのか分かりませんが、HTMLはXMLではありません。 HTMLはSGMLのサブセットであり、XMLはSGMLのサブセットでもあります。 代わりに、HTMLパーサを使用するか、XMLのみを読み込む必要があります。 –

+0

xmlでないhtmlがあります。 Xmlメソッドはいくつかのhtmlファイルでのみ動作します。 xmlライブラリの代わりにhtmlライブラリを使用してください。 – jdweng

+1

@CameronAavik @ jdweng - HTMLの場合、brは '
'(自己終了)ではなく、 '
'となります。それが立証しているように、それは整形式のXMLです。 –

答えて

0

次のXPathを使用することができます。

doc.SelectNodes("/div/p/text()") 

それはbrタグの前と後に次の2つのテキストノードを提供します。

+0

あなたが言ったように、これは2つのテキストノードを作成するので、これは悲しいことに私のケースでは機能しません。私はノードを分割することなく全体として必要とします。 – kyro0

+0

@ kyro0 - 一緒に連結するのは難しいです... –

関連する問題