2012-03-06 110 views
0

我收到的XML看起来像这样,使用XMLBeans的解析它:如何将xml名称空间添加到Java中的非根元素?

<reply xmlns="http://www.xmlisfun.com/abc/def/1.0"> 
    <item-list> 
     <item> 
      <item-data>data</item-data> 
     </item> 
    </item-list> 
</reply> 

有一个名为ItemListReplyType所导入的模式复杂类型。

由于有人在模式定义中混淆,XMLBean分析的对象将无法正确生成ItemListReplyType对象。 ItemListReplyType对象总是会说它不包含任何“item”对象。这是由于一些命名空间冲突。我注意到,当我解析以下内容时,我能够从ItemListReplyType对象的代码中正常检索对象数组(数组不是空 - “item”对象按预期方式存在)。

<reply xmlns="http://www.xmlisfun.com/abc/def/1.0"> 
    <item-list> 
     <prefix:item xmlns:prefix="http://www.xmlisfun.com/particular_namespace"> 
      <prefix:item-data>data</prefix:item-data> 
     </prefix:item> 
    </item-list> 
</reply> 

不用说,正确的解决方案是修复对模式所做的破解并重新生成所有的XMLBeans对象。然而,一年前在项目建立在所有这些对象之前,这将是一个很好的解决方案。我宁愿不惹祸。

是否有一种方法可以轻松修改XML以将名称空间和前缀添加到所有项目元素及其子项?我正在努力做到手动完成并完成它。我想我会在这里寻求帮助。

谢谢。

回答

1

不确定你的XML是什么形式。你提出的mod过于复杂,你只需要调整 来添加xmlns =“blah”。可能很容易就做一个快速的字符串破解或正确的修复就是运行一个xsl转换或一个parse-fix-serialise步骤来添加xmlns位。 HTH

相关问题