Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#XMLReader ReadString如何读取元素中包含嵌套xml的所有内容?_C#_Xml_Xml Parsing_Xmlreader - Fatal编程技术网

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

C#XMLReader ReadString如何读取元素中包含嵌套xml的所有内容?,c#,xml,xml-parsing,xmlreader,C#,Xml,Xml Parsing,Xmlreader,我的xml文件和示例数据如下 <FRUIT> <HTML><B>1.</B> Apple</HTML> <HTML><B>2.</B> Banana</HTML> </FRUIT> 我需要得到1的完整字符串。苹果 我如何使用ReadString()读取HTML元素中的所有内容?如果结构是固定的,并且您知道这些元素,那么可以执行以下操作: List<string

我的xml文件和示例数据如下

 <FRUIT>
 <HTML><B>1.</B> Apple</HTML>
 <HTML><B>2.</B> Banana</HTML>
 </FRUIT>
我需要得到
1的完整字符串。苹果


我如何使用ReadString()读取HTML元素中的所有内容?

如果结构是固定的,并且您知道这些元素,那么可以执行以下操作:

 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))
List=newliststring();
string contents=string.Empty;
xmlr.ReadToFollowing(“HTML”);
做
{   
contents=xmlr.ReadInnerXML();
如果(!string.IsNullOrEmpty(contents))
{        
香蕉。添加(内容物);
}
}而(!string.IsNullOrEmpty(contents))

另请阅读

此处的要求是什么?xml的结构是固定的吗?您想读取的元素的名称,会被预先知道吗?是的,xml结构是固定的,并且元素的名称在本例中“HTML”是预先知道的。我将代码修改为while(xmlr.read()){if((xmlr.IsStartElement())&&(xmlr.name==“HTML”){xmlr.readtofollow(“HTML”);html=xmlr.ReadInnerXml();}},但它只会得到值2。Banana你能在你的问题中粘贴所需的输出吗?是否希望所有HTML元素都作为单独的字符串?您得到的是一个HTML元素,这就是您所要求的,对吗?如果有两个元素,则每次在While循环中都会覆盖该值。您应该将html+=xmlr.ReadInnerXMl()而不是html=xmlr.ReadInnerXMl()放在这里好的,实际上我需要将所有html存储到一个列表变量htmlist=new list()中;虽然(xmlr.Read()){if((xmlr.IsStartElement())&&(xmlr.Name==“HTML”){xmlr.readToFollow(“HTML”);htmllist.Add(xmlr.ReadInnerXml());}},所以我只在列表中得到香蕉。错误,对不起。。。我的意思是我只在名单上得到香蕉,这是不正确的。。。我需要把所有的东西都列入清单。你的更新代码只会得到香蕉。那么,你的列表中没有苹果吗?我再次更新了代码。如果您使用的是.NET3.5(或更高版本),并且性能不是问题,那么您可以使用LINQ,它具有更好的构造和更简单的选项。
 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))