我想知道是否有用于执行实体框架的.NET库或第三方工具,如XML文档上的LINQ查询.我知道已经有LINQ to XML,它允许你对一个ALREADY加载到内存中的XDocument对象执行查询,但是如果XML Document的大小非常大(超过千兆字节)呢?
我想有一个选项将此查询XmlReader交给一个XDocument对象.这可能是开箱即用的吗?
我正在使用dblp XML文件.我实际上想要解析dblp.xml文件,并希望提取有用的信息以供我在某个项目中进一步处理.并且该XML文件非常庞大(1.1 GB),我甚至无法打开此文件.
如果您有dblp.xml的C#解析器,请指导我,或者您可以指导我,或者我们如何解析大型xml文件.
我想读一个大的xml文件(100 + M).由于它的大小,我不想使用XElement将其加载到内存中.我正在使用linq-xml查询来解析和读取它.
最好的方法是什么?关于XPath或XmlReader与linq-xml/XElement组合的任何示例?
请帮忙.谢谢.
我正在尝试将 xml 加载到 XDocument 对象中。
public void ValidateRules(XmlReader xml)
{
xml.MoveToContent();
XDocument xDoc = new XDocument();
xDoc = XDocument.Load(xml);
}
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到错误“XmlReader 状态应该是交互式的”。我为此寻找了解决方法,并在顶部添加了 MoveToContent() 方法(正如前面提到的,这会将 ReadState 更改为 Interactive),但它不起作用。ReadState 是只读的,我无法更改该值。
这里可能有什么问题?
PS 我试图加载的 XML 文件有一个 DTD 参考。它存在于与 XML 相同的路径中。不知道这是否有任何意义。
如果数据在一行上
index=int.Parse(logDataReader.ReadElementContentAsString());
,则
value=double.Parse(logDataReader.ReadElementContentAsString(),
使光标向前移动。如果我取消这些调用,我会看到它在调试中循环了 6 次。
在下面<data>的第一个 ( <logData id="Bravo">) 中只读取了3 个(并且它们是错误的,因为该值用于下一个索引)。在第二个 ( <logData id="Bravo">) 上,所有内容<data>都已读取。
由于该文件是动态创建的(由 XMLwriter),因此无法编辑 xml 并插入换行符。该NewLineChars设置是换行。从 XMLwriter 开始,它实际上只是一行 - 我将它分解以找出它在哪里中断。在浏览器中它正确显示。
如何解决这个问题?
这是我的 XML:
<?xml version="1.0" encoding="utf-8"?>
<log>
<logData id="Alpha">
<data><index>100</index><value>150</value></data>
<data><index>110</index><value>750</value></data>
<data><index>120</index><value>750</value></data>
<data><index>130</index><value>150</value></data>
<data><index>140</index><value>0</value></data>
<data><index>150</index><value>222</value></data>
</logData>
<logData id="Bravo">
<data>
<index>100</index>
<value>25</value>
</data>
<data>
<index>110</index>
<value>11</value>
</data>
<data>
<index>120</index>
<value>1</value>
</data>
<data>
<index>130</index>
<value>25</value></data>
<data>
<index>140</index>
<value>0</value>
</data>
<data>
<index>150</index>
<value>1</value>
</data>
</logData>
</log>
Run Code Online (Sandbox Code Playgroud)
还有我的代码:
static void Main(string[] …Run Code Online (Sandbox Code Playgroud) 我想知道如何从桌面读取XML文件并将其放入字符串中?
这是我的XML:
<smallusers>
<user id="1">
<name>John</name>
<motto>I am john, who are you?</motto>
</user>
<user id="2">
<name>Peter</name>
<motto>Hello everyone!</motto>
</user>
</smallusers>
<bigusers>
<user id="3">
<name>Barry</name>
<motto>Earth is awesome</motto>
</user>
</bigusers>
Run Code Online (Sandbox Code Playgroud)
我想存储每个用户,但仍然检测他们的小或大,有没有办法做到这一点?
在你降低这一点之前,你可能想检查谷歌,因为我做了研究,但没有发现任何东西.