Java:根据用户定义的XSD编写XML

标签 java xml parsing csv xsd

我正在编写一个工具来将 CSV 格式的数据转换为 XML。用户将指定解析方法,即:输出的 XSD,CSV 中的哪个字段进入结果 XML 的哪个字段。

(非常简化的用例)示例:

CSV

Ciccio;Pippo;Pappo
1;2;3

XSD

(more stuff...)
<xs:element name="onetwo">
<xs:element name="three">
<xs:element name="four">

用户给出规则

   Ciccio -> onetwo
   Pippo -> three
   Pappo -> four

我已经使用数据集在 C# 中实现了它,我如何在 Java 中实现它?我知道有 DOM、JAXB 等,但似乎 XSD 仅用于验证以其他方式创建的 XML。我错了吗?

编辑: 一切都需要在运行时。我不知道我会收到什么样的 XSD,所以我不能实例化不存在的对象,也不能用数据填充它们。所以我猜 xjc 不是一个选项。

最佳答案

由于您的输出 XML 文件有 XSD,因此创建此 XML 的最佳方法是使用 Java Architecture for XML绑定(bind) (JAXB)。您可能需要引用:"Using JAXB"教程,让您大致了解如何使用它来满足您的要求。

基本思路如下:

  • 从 XML 模式生成 JAXB Java 类,即您拥有的 XSD
  • 使用模式派生的 JAXB 类在 Java 应用程序中解码和编码 XML 内容
  • 使用模式派生的 JAXB 类从头开始创建 Java 内容树
  • 将数据解码到输出 XML 文件。

Here's another tutorial您可能会发现有用的信息。

关于Java:根据用户定义的XSD编写XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230019/

相关文章:

java - 使用 jackson 将具有重复元素的 XML 转换为 JSON

xml - XPath 检查 java 脚本中元素中是否存在值

c++ - 如何在 linux 终端中处理带有负号 (-) 的 C++ 命令行参数?

parsing - 从句子中找到有意义的子句子

java - Android:混合多个 AudioTrack 实例?

xml - F# XML 类型提供程序和可选类型

java - 检查 Oracle 数据库中是否存在用户 - java jdbc

Java XML解析——合并xi :include的输出

java - 迁移到 Google App Engine 上的 Java 8 后,XPathFactory#newInstance() 无法为默认对象模型创建 XPathFactory 错误

java - 我们可以在android中使元素全局化吗