C#XMLReader ReadString如何读取元素中包含嵌套xml的所有内容?
我的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
<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))