2016-10-04 28 views
1

我有有那種結構的XML文件:爪哇的SimpleXML在一個路徑不同的前綴

<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

由於您使用兩個不同的命名空間,你應該申報他們兩個:

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

希望它能幫助。

+0

我刪除了所有在我的代碼中的@Namespace()註解,然後在我的類的頂部添加了@ NamespaceList。當我啓動它時,現在它會引發錯誤:'類請求中的名稱空間前綴'a'不在範圍內' –

+0

您是否至少爲其中一個名稱空間指定了'引用'屬性?請注意,此屬性是一個URI,它爲每個名稱空間提供了一個唯一的名稱,因此您不應該將它們都留空。 – eltabo