2017-06-10 38 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

你有html而不是xml。 Xml方法只能用於某些html文件。使用html庫而不是xml庫。 – jdweng

+1

@CameronAavik @jdweng - 如果它是HTML,br將是'
'而不是'
'(自關閉)。現在看來,它是格式良好的XML。 –

回答

0

您可以使用以下XPath:

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

它給你的前後br標籤兩個文本節點。

+0

這可悲的不適用於我的情況,因爲正如你所說,它創建了兩個文本節點。我需要整個節點,而不會分裂它。 – kyro0

+0

@ kyro0 - 它們很難拼接在一起... –