C# 避免跳过xml读取器中的元素
假设我有这样一个xml:C# 避免跳过xml读取器中的元素,c#,xml,C#,Xml,假设我有这样一个xml: <articles> <article> <id>1</id> <name>A1</name> <price>10</price> </article> <article> <id>2</id> <name>A2</name> </artic
<articles>
<article>
<id>1</id>
<name>A1</name>
<price>10</price>
</article>
<article>
<id>2</id>
<name>A2</name>
</article>
<article>
<id>3</id>
<name>A3</name>
<price>30</price>
</article>
</articles>
using (XmlReader reader = XmlReader.Create(new StringReader(myXml)))
{
while (true)
{
bool articleExists = reader.ReadToFollowing("article");
if (!articleExists) return;
reader.ReadToFollowing("id");
string id = reader.ReadElementContentAsString();
reader.ReadToFollowing("name");
string name = reader.ReadElementContentAsString();
reader.ReadToFollowing("price");
string price = reader.ReadElementContentAsString();
//do something with these values
}
但如果第2条中没有价格标签,xmlreader将跳转到第A3条中的价格标签,我会把文章弄混,并跳过一些数据,对吗
我怎样才能避免这种情况?所以,如果文章节点中缺少某个标记,那么假设使用了默认值
如果可能的话,我仍然希望使用xmlreader。我真正的文件是200 MB大,所以我需要一个简单、快速、高效的解决方案,它不会挂起系统。创建一个类并使用
XmlSerialzer
类,应该可以为您处理所有问题。我相信您甚至可以让Visual Studio为您创建类,尽管我不确定如何创建。@ethalcoder此工具可以使用XmlSerializer或使用一些DOM方法,如GetElementsByTagName和“按名称获取子对象”,您不会遇到这些问题。