2014-11-23 69 views
0

我的XML文件C#XMLReader ReadString如何讀取所有包含元素中嵌套的xml?如下</p> <pre><code><FRUIT> <HTML><B>1.</B> Apple</HTML> <HTML><B>2.</B> Banana</HTML> </FRUIT> </code></pre> <p>和我的代碼樣本數據

XmlReader xmlr = XmlReader.Create(myxmlfile); 
while (xmlr.Read()) 
{ 
    if ((xmlr.IsStartElement()) && (xmlr.Name == "HTML")) 
    { 
    // this will return blank string! 
    html = xmlr.ReadString(); 
    } 
} 

我需要的<B>1.</B> Apple

滿弦我怎麼能讀取ReadString HTML元素中的一切()?

+0

是什麼在這裏你的要求? xml的結構是否固定?你想閱讀的元素的名稱會事先知道嗎? – 2014-11-23 04:26:23

+0

是的,XML結構是固定的,在這種情況下元素的名稱「HTML」是事先已知的。 – Eddi 2014-11-23 04:50:53

回答

0

如果結構是固定的,你知道的元素之前,那麼你可以這樣做:

List<string> bananas = new List<>string(); 
string contents = string.Empty; 
    xmlr.ReadToFollowing("HTML"); 
    do 
    { 
     contents = xmlr.ReadInnerXML(); 
     if(!string.IsNullOrEmpty(contents)) 
     {   
      bananas.Add(contents); 
     } 

    }while(!string.IsNullOrEmpty(contents)) 

又讀XMLReader on MSDN

+0

我修改了代碼 而(xmlr.Read()){ 如果 ((xmlr.IsStartElement())&&(xmlr.Name == 「HTML」)){ xmlr.ReadToFollowing( 「HTML」 ); html = xmlr.ReadInnerXml(); } } 但它只會得到的值2.香蕉 – Eddi 2014-11-23 06:05:42

+0

您能否在您的問題中粘貼所需的輸出?你想把所有的HTML元素作爲單獨的字符串嗎?你得到一個單一的HTML元素,這就是你要求的權利?如果有兩個元素,則每次在While循環中覆蓋該值。你應該把html + = xmlr.ReadInnerXMl()而不是html = xmlr.ReadInnerXml() – 2014-11-23 06:24:40

+0

好吧,其實我需要將所有的html存儲到列表中 var htmllist = new List (); 而(xmlr.Read()){ 如果 ((xmlr.IsStartElement())&&(xmlr.Name == 「HTML」)) { xmlr.ReadToFollowing( 「HTML」); htmllist.Add(xmlr.ReadInnerXml()); } } 所以我只在列表中得到香蕉。 – Eddi 2014-11-23 06:40:47