Java,SimpleXML在一个Path中有不同的前缀

时间:2016-10-04 10:59:28

标签: java xml xml-parsing xml-serialization simple-framework

我有一个XML文件,它有这种结构:

<a:root>
    <a:body>
      <b:do_action>
        <b:do_input>
           <request>
              <!-- There are a lot of primitive elements -->
           </request>
        </b:do_input>
      </b:do_action>
    </a:body>
</a:root>

我尝试使用SimpleXML解析此XML:

public class Request {
   // There are a lot of defined primitive elements
}

@Root(name = "root")
@Namespace(prefix = "a")
public class Root {

   @Path("a:body/b:do_action/b:do_input")
   @Element(name = "request")
   public Request request;
}

当我实例化我的对象并希望将其显示为字符串时,我收到以下错误消息:

org.simpleframework.xml.core.ElementException: Namespace prefix 'b' in class Request is not in scope

如何处理具有不同前缀的路径?

1 个答案:

答案 0 :(得分:1)

由于您使用了两个不同的命名空间,因此您应该声明它们:

@Root(name = "root")
@NamespaceList({
    @Namespace(prefix = "a" , reference="ref_a"), 
    @Namespace(prefix = "b", reference="ref_b")})
public class Root {
}

希望它有所帮助。