c# – 比xsd生成的类更快的XML文件读取

我正在处理大量包含HL7 Info的XML文件.

这些XML文件的结构在几个复杂的XSD文件中描述.它们是XSD文件的层次结构.像这样:

> Messages.xsd

> batch.xsd
> datatypes.xsd

> Fields.xsd

> MoreFiles.xsd

> Fields.xsd

这不是确切的用法,但它有助于传达它们如何工作的想法.

现在我可以跑了

xsd .\messages.xsd /classes

它会生成一个名为messages.cs的文件,该文件长度超过240,000行.

注意:尽管XSD很复杂,但实际的xml文件平均大约250行XML,每行大约25个字符(不是很大).

我可以使用该文件反序列化我的xml文件,如下所示:

var bytes = Encoding.ASCII.GetBytes(message.Message);
var memoryStream = new MemoryStream(bytes);
var message = ormSerializer.Deserialize(memoryStream); 

这一切都很有效.

当需要将数据从xml结构中拉出时,它太慢了.

有没有其他方法可以更快地访问我的xml数据?我应该使用XPathDocument和XPathNavigator吗? XPathNavigator可以使用所有XSD文件,因此我不必为我处理的每个xml文件重新创建它(并非所有XML节点都在所有XML文件中)吗?

还有其他想法可以快速获取XML数据吗?

解决方法:

您正在使用的技术(将XML自动映射到Java或C#类)称为“数据绑定”,当架构简单且小巧时,它可以很好地工作.对于像HL7这样大而丑的东西,我会说它不是首发.

你在做什么样的处理?你有什么理由不能在XSLT或XQuery中做到这一点吗?这些语言旨在处理XML,它们避免了当您必须将数据从XML模型转换为Java或C#等编程语言的数据模型时所遇到的“阻塞不匹配”.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念