使用xsd将csv转换为xml

Cas*_*sey 5 xml csv xslt xsd

我试图找到一种可重用的方法来获取CSV文件并从中生成符合指定XSD的XML文件.我还没有找到一个可重复使用的方法.我使用了Altova MapForce,它允许我导入CSV文件和XSD,进行映射而不是从中生成代码,但是只要XSD发生变化,代码就需要重新生成.Altova也生产了很多代码.

我理想的解决方案是一组Java类,我可以将CSV文件提供给XSD,并从中获取XML文件.我找不到这样的东西,我正在考虑可能创造一些东西.

想法?基于这个问题,这里有什么东西使用XSLT 吗?

谢谢.

Rob*_*ney 7

这似乎很容易做到,但事实并非如此.XML Schema是一种文档验证语言,而不是文档生成语言.它没有告诉你如何制作新文件; 它会告诉您所制作的文件是否有效.远远不是那些不一样的东西.

例如,在XML Schema中创建一个由一系列可选选项组成的复杂类型是微不足道的.一个foo元素可以有一个barbaz孩子,然后是一个bazbat孩子,那么foo,barbat孩子.这使得规则可以确定这两个元素都是有效的:

<foo>
   <baz/>
   <baz/>
   <bar/>
</foo>

<foo>
   <foo>
      <bar/>
   </foo>
</foo>
Run Code Online (Sandbox Code Playgroud)

同时,该规则在确定如何获取数据项元组并foo从中创建元素方面几乎没有任何帮助.

通常,当有人问这个问题时,他们会查看他们正在使用的一个或两个模式,这些模式定义了一个相对简单的文档结构.看起来很直观,应该很容易将这些模式用作映射过程的输入.它可能是.什么不容易,甚至可能是一个映射过程,可以将任何模式作为输入.

在我的项目中,我所做的是简化问题.我已经构建了使用CSV和XML并支持模式验证的程序,但在这些程序中,模式是输出.我已经定义了一个简单的XML元数据格式,例如:

<item name="foo" type="string" size="10" allowNulls="true" .../>
<item name="bar" type="date" allowNulls="false" .../>
Run Code Online (Sandbox Code Playgroud)

然后我可以使用该元数据来控制CSV输入的XML生成,我也可以使用它来生成我的程序生成的XML将符合的模式.如果我更改元数据,我的XML和架构会相应更改.

当然,如果模式真的是您的过程的输入(例如,它们由第三方提供),这甚至不会开始帮助您.