2010-10-04 96 views
0

我一直在玩XStream XML解析和我有点问题。在我需要解析的文件中,我有一个具有多个相同名称的任意属性的节点。节点是一个足球队,属性是每个球员的名字。Xstream重复属性问题

<team home="Arsenal"> 
    <squad player="Manuel Almunia Rivero" player="Abou Diaby" player="Bacary Sagna" ... player="Robin van Persie"/> 
    <subs player="Carlos Vela" player="Theo Walcott"/> 
</team> 

我的问题是,当我尝试和demarshall这个文件,我得到一个重复的属性问题。我想要做的就是将这些字符串加载回List中,这样我就可以维护团队中的人员。这对于订单等并不重要。 有人可以指出我如何遍历每个属性的正确方向,即使它们具有相同的名称吗? 感谢 克里斯

回答

1

你有两个选择:

  1. 文件与谁产生的文件,要求他们解决,他们有相同的名字(多重属性的bug,你给的例子是不是一个bug格式良好的XML,因此不能期望XML处理器解析它)。

  2. 将一些在流上操作的东西写成文本流并生成一些真实的XML,例如<squad><player>Manuel Almunia Rivero</player><player>Abou Diaby</player>...

第二是充满,因为有问题的种种警惕编写自己的XML解析代码(这是他们的错误是强迫你这样做)的时候,所以如果你能得到的人生成文件来修复它,这就是要走的路(这会让其他进程能够使用它,并且毕竟这是他们的错误)。

+0

因此,如果我在理解您的解决方案时是正确的,那么您建议获取XML文件的副本,其中每个值(例如名称,团队等)都以节点的形式给出(例如,封装在自己的标签中),而不是作为一个节点的属性? – 2010-10-04 19:08:41

+0

这将工作。如果可能的话,让生产者用真正的XML发送给你一些东西,而不是自己修复它。 – 2010-10-04 19:23:58

+0

感谢您的帮助。产生XML的人是我这个时代的成员,这是该项目的插件,因此我们没有足够的时间来研究正确的XML约定。上面的输出看起来不错,人们可读,但是将序列化数据封装每个属性到自己的标签中的正确方法是?感谢您的帮助和耐心。 – 2010-10-04 19:27:02