Xmlreader - 按名称获取元素并写出子元素 c# webforms
Xmlreader - get element by name and write out childelements c# webforms
我正在尝试写出 "fruit" 排名元素中的每个子元素。正如现在的代码,它转到我的 xml 文件中的第一个排名元素并输出其中的子元素: 但是我如何按名称转到 "fruit" 并写出它的子元素?
Xml
<ranking name="Browers>
<stat name="Chrome" />
<stat name="Firefox" />
<stat name="Safari" />
</ranking>
<ranking name="Fruit>
<stat name="Apple" />
<stat name="Orange" />
<stat name="Strawberry" />
</ranking>
代码隐藏
XmlReader reader = XmlReader.Create(Server.MapPath("/temp/rankings.xml"));
while (true)
{
reader.ReadToFollowing("ranking");
string name = reader.GetAttribute("name");
if (name == "Fruit")
{
if (reader.ReadToDescendant("stat"))
{
do
{
litList.Text += reader.GetAttribute("name") + "<br />";
litList.Text += reader.GetAttribute("percent") + "<br />";
litList.Text += reader.GetAttribute("absolute") + "<br />";
} while (reader.ReadToNextSibling("stat"));
}
break;
}
}
可以这样做:
if (reader.ReadToFollowing("ranking"))
{
do
{
Console.WriteLine("Ranking: " + reader.GetAttribute("name"));
if (reader.ReadToDescendant("stat"))
{
do
{
Console.WriteLine("Stat: " + reader.GetAttribute("name"));
} while (reader.ReadToNextSibling("stat"));
}
} while (reader.ReadToNextSibling("ranking"));
}
它可能有一些缺点。除了 XmlReader,您还可以使用 XDocument:https://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument(v=vs.110).aspx
我正在尝试写出 "fruit" 排名元素中的每个子元素。正如现在的代码,它转到我的 xml 文件中的第一个排名元素并输出其中的子元素: 但是我如何按名称转到 "fruit" 并写出它的子元素?
Xml
<ranking name="Browers>
<stat name="Chrome" />
<stat name="Firefox" />
<stat name="Safari" />
</ranking>
<ranking name="Fruit>
<stat name="Apple" />
<stat name="Orange" />
<stat name="Strawberry" />
</ranking>
代码隐藏
XmlReader reader = XmlReader.Create(Server.MapPath("/temp/rankings.xml"));
while (true)
{
reader.ReadToFollowing("ranking");
string name = reader.GetAttribute("name");
if (name == "Fruit")
{
if (reader.ReadToDescendant("stat"))
{
do
{
litList.Text += reader.GetAttribute("name") + "<br />";
litList.Text += reader.GetAttribute("percent") + "<br />";
litList.Text += reader.GetAttribute("absolute") + "<br />";
} while (reader.ReadToNextSibling("stat"));
}
break;
}
}
可以这样做:
if (reader.ReadToFollowing("ranking"))
{
do
{
Console.WriteLine("Ranking: " + reader.GetAttribute("name"));
if (reader.ReadToDescendant("stat"))
{
do
{
Console.WriteLine("Stat: " + reader.GetAttribute("name"));
} while (reader.ReadToNextSibling("stat"));
}
} while (reader.ReadToNextSibling("ranking"));
}
它可能有一些缺点。除了 XmlReader,您还可以使用 XDocument:https://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument(v=vs.110).aspx