如何使用XmlReader类?

moh*_*eza 12 c# xml xmlreader

我想使用XmlReader保存并加载我的xml数据.但我不知道如何使用这个课程.你能给我一个开始的示例代码吗?

Mat*_*ley 12

MSDN有一个简单的例子,让你开始在这里.

如果您对阅读和编写XML文档感兴趣,而不仅仅是专门使用XmlReader类,那么这里有一篇很好的文章介绍了一些选项.

但是,如果你只是想开始玩游戏,试试这个:

 XmlReaderSettings settings = new XmlReaderSettings();
 settings.IgnoreWhitespace = true;
 settings.IgnoreComments = true;
 XmlReader reader = XmlReader.Create("file.xml", settings);
Run Code Online (Sandbox Code Playgroud)


ben*_*min 9

我个人已经从XMLReader切换到System.XML.Linq.XDocument来管理我的XML数据文件.这样我就可以轻松地将数据从xml中提取到对象中,并像我程序中的任何其他对象一样管理它们.当我完成操作它们时,我可以随时将更改保存回xml文件中.

        //Load my xml document
        XDocument myData = XDocument.Load(PhysicalApplicationPath + "/Data.xml");

        //Create my new object
        HelpItem newitem = new HelpItem();
        newitem.Answer = answer;
        newitem.Question = question;
        newitem.Category = category;

        //Find the Parent Node and then add the new item to it.
        XElement helpItems = myData.Descendants("HelpItems").First();
        helpItems.Add(newitem.XmlHelpItem());

        //then save it back out to the file system
        myData.Save(PhysicalApplicationPath + "/Data.xml");
Run Code Online (Sandbox Code Playgroud)

如果我想在一个易于管理的数据集中使用这些数据,我可以将它绑定到我的对象列表.

        List<HelpItem> helpitems = (from helpitem in myData.Descendants("HelpItem")
                  select new HelpItem
                  {
                       Category = helpitem.Element("Category").Value,
                       Question = helpitem.Element("Question").Value,
                       Answer = helpitem.Element("Answer").Value,
                  }).ToList<HelpItem>();
Run Code Online (Sandbox Code Playgroud)

现在它可以传递并使用我的对象类的任何固有函数进行操作.

为方便起见,我的类具有将自身创建为xml节点的功能.

public XElement XmlHelpItem()
    {
        XElement helpitem = new XElement("HelpItem");
        XElement category = new XElement("Category", Category);
        XElement question = new XElement("Question", Question);
        XElement answer = new XElement("Answer", Answer);
        helpitem.Add(category);
        helpitem.Add(question);
        helpitem.Add(answer);
        return helpitem;
    }
Run Code Online (Sandbox Code Playgroud)

  • 当标题为"如何使用XmlReader类"的问题具有接受回答问题的接受答案时,我们遇到了严重的问题.我投票删除或重命名该问题. (14认同)
  • 如果您正在阅读大量XML文档,这不是一个好的解决方案.XMLReader允许您对其进行流式处理和读取. (5认同)
  • 如果我需要查询XML,就像我查询其他数据一样,我同意.但是,对于简单的验证或仅向前搜索,XmlReader是更好的选择,因为它更有效. (4认同)

Meh*_*ari 7

您应该使用该Create方法而不是使用new,因为XmlReaderabstract class使用Factory模式.

var xmlReader = XmlReader.Create("xmlfile.xml");
Run Code Online (Sandbox Code Playgroud)


jas*_*son 6

Nutshell中出色的C#3.0开始,请考虑查看第11章中的示例代码.