问题是
我有这种结构的xml文件
......................
<current_conditions>
<condition data="partly cloudy"/>
<temp_f data="2"/>
<temp_c data="-17"/>
<humidity data="Huminidy: 66 %"/>
<icon data="/ig/images/weather/partly_cloudy.gif"/>
<wind_condition data="Wind: С, 2 м/с"/>
</current_conditions>
<forecast_conditions>
<day_of_week data=""/>
<low data="-23"/>
<high data="-14"/>
<icon data="/ig/images/weather/mostly_sunny.gif"/>
<condition data="Mostly sunny"/>
</forecast_conditions>
.....................
我像这样解析它
while (r.Read())
{
if (r.NodeType == XmlNodeType.Element)
{
if (r.Name == "current_conditions")
{
string temp = "";
while (r.Read() && r.Name!="forecast_conditions")//I've addee this condition because it parse all nodes after "current conditions"
{
if (Current_Condtions.Contains(r.Name))
{
temp += r.GetAttribute("data");
temp += "\n";
}
}
Console.WriteLine(temp);
}
}
}
我添加了条件,但它仍然读取文件到最后,但我只想从<current_conditions>
解析到</current_conditions>
然后停止读取xml文件。
怎么做?
答案 0 :(得分:1)
最简单的方法是在获得所需数据后添加break;
语句。
更简洁的方法是使用ReadSubtree
method.一旦进入current_conditions节点,使用它来创建新的阅读器。然后它只会读取该节点及其子节点。
像
这样的东西r.ReadToFollowing("current_conditions")
subtree = r.ReadSubtree()
while(subtree.Read())
{
//Do your stuff with subtree...
}
答案 1 :(得分:1)
在您完成所需工作时,您需要break
语句。
答案 2 :(得分:0)
尝试使用innerXML属性。