C#XMLReader ReadString如何读取所有包含元素中嵌套的xml?如下

 1. Apple 2. Banana  

和我的代码样本数据

问题描述:

我的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

如果结构是固定的,你知道的元素之前,那么你可以这样做:

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