嗨,我用 Java 编写了一个通用代码,它在不知道其结构的情况下解析 XML 输入文件并以逗号分隔值输出值。因此,假设我的 XML 文档中有以下内容:
<Employee>
<Name>XYZ</Name>
<Id>123</Id>
<Address>
<Office_Address>office address here</Office_Address>
</Address>
</Employee>
所以现在我的 Java 代码将上面的 xml 文件解析为逗号分隔值:
Employee (File 1): Name , ID
Address (File 2): Office_Address
也就是说,对于每个嵌套元素,其输出一个新的 csv 文件,其中的列等于其子节点。
所以这工作正常,但现在问题是:让我拥有与上述相同的 XML 文件:
<Employee>
<Name>XYZ</Name>
<Id>123</Id>
<Address/>
</Employee>
因此,在这种情况下,当我的通用 Java 代码处理此文件时,它会输出为:
Employee (File 1) : Name, Id, Address
因此,我得到一个而不是两个输出文件,而文件 1 有时有 3 个条目而不是 2。发生这种情况是因为 Address 元素有时是嵌套的,有时是扁平的。因此,当它嵌套时,Java 代码会创建一个与之对应的新逗号分隔,但当它不嵌套时,它只会输出一个文件。
我可以通过硬编码这个元素的逻辑来解决这个问题。但我不想这样做,因为我的 Java 通用 XML 解析代码没有意义。
所以我的问题是,我们可以通过任何方式找出从相同源生成的 XML 文件中的元素可能以嵌套形式存在,有时以平面形式存在。使用 XSD 或任何其他方式。我尝试研究很多东西,但无法弄清楚任何东西。
在此先感谢并希望得到解决方案或一些好的建议。