將XML轉換爲Java對象的最佳方式是什麼?將XML轉換爲Java對象
我不希望喜歡像表示法,但想從XML中提取某些數據並填充Java對象。我看了一下XStream,但並不喜歡整個「下移,上移」類型的東西。寫轉換器時,我寧願像DOM模型...
將XML轉換爲Java對象的最佳方式是什麼?將XML轉換爲Java對象
我不希望喜歡像表示法,但想從XML中提取某些數據並填充Java對象。我看了一下XStream,但並不喜歡整個「下移,上移」類型的東西。寫轉換器時,我寧願像DOM模型...
我知道每個人都喜歡像JAXB和這樣的自動解決方案,但我建議你手工編碼javax.xml.bind.Marshaller
和javax.xml.bind.Unmarshaller
實現,達到您想要的東西而不必填滿你的燙髮根空間。使用JDOM解析XML並使用XPath將值映射到Java對象。做一次這將會是一些工作,但是你將會擁有你所需要的,而不是更多。
訪問Apache沼氣池
我不能完全肯定,如果這是你在找什麼,但你可以使用像XMLBeans將XML綁定到Java對象。我必須在以前的僱主中使用它。不幸的是,這是一個現有的系統,我只需要操作這些對象,而不必生成包含它們的庫。另外,我不確定如果沒有XSD,它的工作效果如何(您沒有提及是否有XSD)。
如果你有一個XML模式,JAXB很好 - 作爲JDK的一部分。通過運行例如Java生成Java類xjc -p foo myschema.xsd
讀取XML文件,並返回一個對象(從由XJC工具生成的類):
JAXBContext context = JAXBContext.newInstance(FooObj.class);
Unmarshaller unMarshaller = context.createUnmarshaller();
FooObj param = (FooObj) unMarshaller.unmarshal(new FileInputStream("Foo.xml"));
你可以做類似的事情,如果你只想要一個XML文檔的一部分轉換爲對象,你應該例如能夠爲JAXB提供DOM文檔的一部分,而不是像上面那樣完成整個文件。
+1 - 從Java類啓動時,您還可以使用JAXB(JSR-222)實現。您只需在希望XML表示與默認值不同的地方添加註釋即可:http://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html – 2012-12-05 11:28:04
您可以使用Castor將XML方便地轉換爲Java並返回。
Castor數據,你可以
Castor映射文件非常簡單且直觀: *只有當它是xml屬性時才能將值作爲構造函數參數傳遞(不支持元素作爲構造函數參數) *不能直接寫入私有字段 所以如果您在DDD方法中實現了域(no取而代之的是setter和構造函數)並輸入xml存儲信息作爲元素,所以沒有辦法使用castor – 2011-09-29 12:08:53
JAXB是將對象轉換爲XML的最佳方式,而MOXy是最好的JAXB實現。
莫西提供以下擴展名:
我想從XML到對象的另一種方式。另外我的XML文檔非常大,我只想將一小部分數據解析到我的對象中。 – 2010-07-20 23:58:55
JAXB/MOXy還支持XML到對象。你只需要映射你想要的其他內容將被忽略。基於MOXy的基於XPath的映射可以幫助您保留一個小對象模型。請參閱http://bdoughan.blogspot.com/2010/07/xpath-based-mapping.html – 2010-07-21 13:07:42
西河看起來很好的唯一的事情是,我寧願用JDOM實現HierarchicalStreamReader的工作....我想我可以投,但這個好像有點怪怪的....有一種使用轉換器但使用JDOM閱讀器的方法? – 2010-07-18 16:16:07