gpt4 book ai didi

c# - 将(大型)XML 文件转换为关系 SQL

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:23 27 4
gpt4 key购买 nike

我的任务是导入一组 XML 文件,转换它们并将它们上传到 SQL 数据库,然后将它们重新转换为不同的 XML 格式。

XML 文件相当大,其中一些文件有点复杂,所以我不确定执行此操作的最佳方法。我当然想以某种方式使这个过程自动化——并且实际上希望对此有某种 Entity Framework 式的解决方案。

我对在 .NET 中处理和处理 XML 还很陌生,所以我真的不知道我的选择是什么。我读过 XSLT,但在我看来,它是我需要首先学习的一种“语言”,这对我来说不是一种解决方案。

只是为了设置一点上下文,最终的解决方案实际上需要每周导入 XML 的新/更新版本,将新数据上传到 sql,然后重新导出为其他 XML 格式。

如果有人能给我任何关于如何进行的想法,我将不胜感激。

我的第一个建议是使用类似 XSD2DB 的东西或 XML SPY首先创建数据库结构,但我真的不知道我应该如何继续。

其实我很空白:)

最佳答案

XSLT 是 XML 处理器用来将一种格式的 XML 文档转换为另一种格式的 XML 文档的语言。如果您也不需要将数据存储在数据库中,XSLT 将是您的选择。

所有工具,如 XSD2DB 或 XML SPY 都会为您创建一些数据库模式,但模式的质量将在很大程度上取决于 XML 文档和 XSD 的质量(您有 XSD 还是打算从示例 XML 生成它? ).生成的数据库对于 EF 可能用处不大。

如果您有 XSD,则可以使用 Visual Studio 附带的 xsd.exe 工具,并生成表示 .NET 代码中 XML 文件数据的类。您将能够使用 XmlSerializer 将 XML 文档反序列化到您生成的类中。问题在于某些 XSD 构造,如 choice 以非常丑陋的方式在 .NET 代码中建模。如果您的 XML 文件非常大,那么另一个问题可能是性能,因为反序列化必须一次读取所有数据。最后一个问题可能又是 EF - XSD 生成的类很可能不能用作实体,您将无法映射它们。

因此,要么使用 EF,在这种情况下,您将不得不分析 XSD 并创建自定义实体并映射到您自己设计的数据库,您将从 XmlReader(最佳性能)、XmlDocumentXDocument 或使用一些工具帮助您从 XML 创建类或数据库,在这种情况下使用直接 SQL 来处理数据库。

反向操作将再次需要自定义方法。您将拥有由自定义 EF 实体或某些自动生成的类表示的数据,您必须将它们转换为新格式。您可以再次使用 xsd.exe 获取新格式的类并编写自定义 .NET 代码从旧类填充新类(并使用 XmlSerializer 将新结构保存到 XML)或者您可以使用XmlWriterXDocumentXmlDocument 直接构建目标 XML 文档。

使用现成的解决方案,任何形式的数据迁移都不是一件容易的事。如果处理的数据非常庞大,您可以使用 SQL Server Integration Services 等工具,您可以在其中直接与 XML 和 SQL 交互并批量处理数据。

关于c# - 将(大型)XML 文件转换为关系 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com