C# 避免跳过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

假设我有这样一个xml:

<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和“按名称获取子对象”,您不会遇到这些问题。