Joh*_*tos 1 .net c# xml xslt xpath
我正在编写一个C#/ VB程序,用于根据XML中收到的信息报告数据.
我的情况是我每月收到许多XML(大约100-200) - 每个大小从10mb到350mb不等.对于这些XML中的每一个,我只需要一小部分数据(少于任何一个文件的整个数据的5%),以便生成必要的报告.
此外,该数据子集将始终保持在相同的键结构中(它可能存在于多个键中,也可能存在于不同的级别,但它始终存在于相同的键名中/包含它的键将始终具有具有相同的属性,如"名称"等)
所以,我目前关于如何做到这一点的想法是:
我的主要问题是什么才是最好的方法来获取数据?我最熟悉XPath,但是对于200MB大小的多个文件,我担心在整个文件中加载性能问题.
我见过/研究的其他事情是:
老实说,我不知道标准是什么,因为大量的XML和文件大小的差异,我不熟悉任何其他方法 - 例如,链接XMLs到SQL Server直接/使用ADO来查询XML - 因此,不知道它们可能的好处/缺点.
如果你们中的任何一个人处于类似的情况,我真的很感激任何一种正确方向的指针/至少验证我的方法不是最糟糕的那个:)
谢谢!!!
至于内存消耗和性能问题,.NET XML API的一个很好的特性是你可以将XmlReader与XPathDocument或XmlDocument或XElement结合起来,只是有选择地将部分文档读入内存,然后具有XPath或LINQ to XML功能可用于该部分.LINQ to XML有http://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.readfrom%28v=vs.110%29.aspx这样做,DOM/XmlDocument有http:/ /msdn.microsoft.com/en-us/library/system.xml.xmldocument.readnode%28v=vs.110%29.aspx.因此,根据您的XML结构,您可以使用XmlReader快速读取XML,而不会消耗太多内存,然后,当您拥有您感兴趣的元素时,您可以将其读入XElement(LINQ to XML)或XmlNode(DOM)然后将LINQ应用于XML和/或XPath以读取详细信息.
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |