XML noob在这里!所以我有一些xml数据:
<DataChunk>
<ResponseChunk>
<errors>
<error code=\"0\">
Something happened here: Line 1, position 1.
</error>
</errors>
</ResponseChunk>
</DataChunk>
Run Code Online (Sandbox Code Playgroud)
如何获取"错误"列表,我可以访问"错误代码"和以下文本说明?另外,我在c#中使用.net4.0 ...谢谢!
我没有用linq来做xml,但我见过的所有例子都将整个XML文档加载到内存中.
如果XML文件是8GB,你真的没有选择怎么办?
我的第一个想法是将XElement.Load方法(TextReader)与FileStream类的实例结合使用.
问题:这是否有效,这是解决搜索非常大的XML文件问题的正确方法吗?
注意:不需要高性能..我正在尝试获取linq到xml基本上完成程序的工作我可以编写循环遍历我的大文件的每一行并收集,但因为linq是"循环中心" "我希望这是可能的......
伙计们,
请问,在C#.NET 3.5中编写真正大的XML文档(最多500 MB)有什么好方法?我有一些搜索,似乎找不到任何解决这个具体问题的东西.
我之前的主题(在C#代码中解析(大)XML的最佳方法是什么?)包括读取类似大小的Xml文档...解决了这个问题后,我需要考虑如何编写更新的功能(http:// www. opengeospatial.org/standards/sfa)到"update.xml"文件.
我的想法:考虑到要生成的文档的最大大小,显然有一个大的DOM已经出局了.我正在使用XSD.EXE从模式中生成绑定类...它与XmlSerializer类很好地配合,但我认为它在"引擎盖下"构建了一个DOM.它是否正确?.我不能同时在内存中保存所有功能(最多50,000个).我需要从数据库中读取一个功能,序列化它,并将其写入文件.所以我想我应该使用XmlSerializer为文件的每个单独的功能编写"doclet".如果这是可能/可行的话,我还不知道.
你怎么看?
背景:我正在将旧的VB6 MapInfo"客户端插件"移植到C#.有一个现有的J2EE"更新服务"(实际上只是一个web-app),该程序(以及其他)必须使用它.我无法改变服务器; 除非有必要; 特别是涉及改变其他客户.服务器接受一个XML文档,其架构不具体说明任何名称空间......即:只有默认名称空间,一切都在其中.
我的经验:我几乎是一个C#和.NET新手.我用各种语言编写了大约10年的编程,包括Java,VB,C和一些C++.
干杯全都.基思.
PS:这是晚餐时间,所以我将大约半小时擅离职守.
我正在尝试阅读一个大型的XML文档,我想以块XmlDocument的形式将整个文件读入内存.我知道我可以XmlTextReader这样做,但我想知道是否有人使用SAX for .NET?我知道Java开发人员发誓它,我想知道是否值得尝试一下,如果有的话,使用它有什么好处.我正在寻找细节.
我正在调用一个webservice,它返回一个大约2MB的xml.
一切都很标准.问题是创建XDocument.
XDocument xdoc = XDocument.Load( XMLReader Object); // takes 4 sec!!!
Run Code Online (Sandbox Code Playgroud)
我正在创建xdoc,因为我使用LINQ to XML来读取XML.
Stopwatch s = new Stopwatch();
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(MyUri);
System.Net.ServicePointManager.Expect100Continue = false;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = Poststring.Length;
StreamWriter swriter = new StreamWriter(req.GetRequestStream());
swriter.Write(Poststring);
swriter.Close();
s.Start();
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
XmlReader MyXmlReader = null;
XmlReaderSettings settings = new XmlReaderSettings();
settings.ProhibitDtd = false;
settings.ValidationType = ValidationType.None;
settings.ConformanceLevel = ConformanceLevel.Document;
Stream stream = response.GetResponseStream();
s.Stop();
Debug.WriteLine("stream= response.GetResponseStream(): " + s.ElapsedMilliseconds);
s.Reset();
MyXmlReader = XmlReader.Create(stream, …Run Code Online (Sandbox Code Playgroud) 为什么StringBuilder大小大于字符串(~250MB).
请阅读问题.我想知道字符串中大小约束的原因,但不知道在stringbuilder中.我已经修复了读取文件的问题.
是的,我知道有操作,我们可以在字符串构建器上执行如append,replace,remove等.但是当我们无法从它获取ToString()并且我们无法直接写入时,它的用途是什么文件.我们必须让ToString()实际使用它,但由于它的大小超出了字符串范围,因此抛出异常.
因此,特别是使用字符串构建器,其大小比字符串大,因为我将大约1 GB的文件读入字符串构建器但不能将其转换为字符串.我阅读了StringBuilder上StringBuilder的所有优点和缺点,但我无法解释这一点
更新: 我想从文件中加载XMLDocument,如果读入块,则无法加载数据,因为根级节点需要其关闭标记,该标记将位于其他块块中
更新: 我知道这不是一个正确的方法现在我是不同的过程,但我仍然想知道字符串大小约束的原因,但不是在stringbuilder
更新: 我已修复我的问题,并想知道stringbuilder上没有内存约束的原因.
什么是阅读XML的最佳方式?
我的xml就像我会有很多
<A> and <B>, not sure how many will be there and I have to read the whole xml file.
Run Code Online (Sandbox Code Playgroud)
我不能说子元素喜欢
<180> will be there under <A> for sure. So does the other element.
Run Code Online (Sandbox Code Playgroud)
但如果它在那里我必须阅读它.
我应该使用LINQ或XPath还是XMLReader?哪一个更好更容易?
<A>
<180>20130218</180> ///180 is here
<170>5</170>
<220>20080210</220>
<730 CLID='AAA' KW='BBB' KW2='INTERNATIONAL'>
<731>BBB INTERNATIONAL AG</731>
<732>XXX</732>
<735>US66</735>
<734>YYY</734>
</730>
<300>
<301>
<320>20071100</320>
<310>12345</310>
</301>
<330>US</330>
</300>
</A>
<A> ///180 is not here
<170>5</170>
<220>20080210</220>
<730 CLID='AAA' KW='BBB' KW2='WORLD'>
<731>BBB INTERNATIONAL AG</731>
<734>YYY</734>
</730> …Run Code Online (Sandbox Code Playgroud)