微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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#等编程语言的数据模型时所遇到的“阻塞不匹配”.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐