XML 数据库不起作用

本文关键字:不起作用 数据库 XML | 更新日期: 2023-09-27 18:34:05

我正在创建一个Windows Phone应用程序,我需要实现一个相当大的数据库(由288,000个项目组成),但是每当我尝试运行它时,程序都会给我一个System.Xml.XmlException

问题是,如果我只在 XML 数据库中放置 100 个或更少的项目,它就可以工作,并允许我查询它。

你知道它为什么会这样吗?

这是代码:

loadCustomData = XDocument.Load("vocabolario.xml");
var domanda = from c in loadCustomData.Descendants("Parola")
              where c.Attribute("id").Value == "1"
              select c.Attribute("Contenuto").Value;
lol.Text = domanda.First();

XML 数据库不起作用

摘自 Jon Skeet 的文章。

如果您乐于将所有内容读入内存,请使用 XDocument。它会让你的生活更轻松。LINQ to XML是一个可爱的API。

基本上,如果您需要以流式处理大型XML文件,请使用XmlReader(例如XmlTextReader)。这是一个更痛苦的API,但它允许流式传输(即只处理你需要的数据,所以你可以浏览一个巨大的文档,一次只有少量的内存)。

但是,有一种混合方法 - 如果您有一个由小元素组成的大型文档,则可以从位于元素开头的 XmlReader 创建 XElement,使用 LINQ to XML 处理该元素,然后将 XmlReader 移动到下一个元素并重新开始。

乔恩·斯基特描述

Check the Example below
   // Create a DOM document with some content.
   XmlDocument doc = new XmlDocument();
   XmlElement child = doc.CreateElement("Child");
   child.InnerText = "child contents";
   XmlElement root = doc.CreateElement("Root");
   root.AppendChild(child);
   doc.AppendChild(root);
   // Create a reader and move to the content.
   using (XmlNodeReader nodeReader = new XmlNodeReader(doc)) {
   // the reader must be in the Interactive state in order to
   // Create a LINQ to XML tree from it.
   nodeReader.MoveToContent();
   XElement xRoot = XElement.Load(nodeReader);
   Console.WriteLine(xRoot);
}

这只是一个例子尝试类似的事情。