java
  • xml
  • annotations
  • jackson
  • 2013-03-17 55 views 4 likes 
    4

    是否有可能使用Jackson根據其名稱空間處理重複的xml標記?如何使用Jackson處理名稱空間重複的xml標記

    下面的代碼拋出一個JsonMappingException:多領域代表財產 「URL」

    private final ObjectMapper xmlMapper = new XmlMapper(); 
    
    private static final String xml = 
         "<example xmlns:test='http://test.com/'>" + 
          "<test:url>www.namespace.com'</test:url>" + 
          "<url>www.url.com'</url>" + 
         "</example>"; 
    
    @Test 
    public void parseXml() throws Exception { 
        Example example = xmlMapper.readValue(xml, Example.class); 
    
        assert example.namespaceUrl.equals("www.namespace.com"); 
    } 
    
    public static class Example { 
    
        @JsonProperty("url") 
        public String namespaceUrl; 
    
        @JsonProperty("url") 
        public String url; 
    
    } 
    

    感謝一大堆!

    +0

    您可以使用JAXB(JSR-222)實現輕鬆處理此用例:http://blog.bdoughan.com/2010/08/jaxb-namespaces.html – 2013-03-19 01:41:00

    +0

    如何?我的package-info中有javax.xml.bind.annotation.XmlNsForm.QUALIFIED。傑克遜仍然在吹捧,因爲它看到兩個同名的元素。有趣的是,元素名稱甚至不會以json有效載荷結束,所以它甚至不重要 – 2013-07-22 22:24:56

    回答

    2

    目前沒有辦法做到這一點 - 你不能使用只有命名空間不同的屬性。這不是一個基本的限制;也就是說,通過更多的工作,它可以得到支持;但它是目前的侷限性。

    相關問題