簡體   English   中英

如何將JAXB對象編組為不同的模式?

[英]How to marshall JAXB object to a different schema?

我解組了一種特定格式的XML,例如

<root>
   <a/>
   <b/>
   <c>
     <x/>
   </c>
   <d/>
</root>

在使用Java對象之后,我想將它發送到另一個使用不同模式的服務,例如

<anotherRoot>
   <a/>
   <x/>
   <something>
      <d/>
   </something>
</anotherRoot>

這可以通過JAXB“輕松”完成嗎?

使用任何JAXB(JSR-222)實現,您可以在JAXBSourcejavax.xml.transform API上使用XSLT來生成輔助XML結構:

    JAXBContext jc = JAXBContext.newInstance(Foo.class);

    // Output XML conforming to first XML Schema
    Marshaller marshaller = jc.createMarshaller();
    marshaller.marshal(foo, System.out);

    // Create Transformer on Style Sheet that converts XML to 
    // conform the second XML Schema
    TransformerFactory tf = TransformerFactory.newInstance();
    StreamSource xslt = new StreamSource(
            "src/example/stylesheet.xsl");
    Transformer transformer = tf.newTransformer(xslt);

    // Source
    JAXBSource source = new JAXBSource(jc, foo);

    // Result
    StreamResult result = new StreamResult(System.out);

    // Transform
    transformer.transform(source, result);

完整的例子

您可以為其他服務創建創建代理,並將其bean視為簡單的數據傳輸對象。

因此,當您希望調用該服務時,您可以根據正確的模型對象(您使用的那個,包含業務邏輯的對象)的值手動填充bean,並使用bean調用該服務。

如果服務接口發生更改,您可以重新創建代理,編譯器將幫助您修復轉換。

如何編組 ArrayList<object> [] 在 JAXB 中?<div id="text_translate"><p> 我有一個 ArrayList[] 類型的變量(列表),我想將它保存在 XML 中。 我嘗試了 JAXB,但它只保存了“”字符串(“的重復”等於 list.length)並且在 ArrayLists 中沒有任何項目。如果我嘗試二維數組,它工作正常。如果我嘗試 ArrayList,它也可以正常工作。我怎么解決這個問題?</p><p> 我的代碼類似於:</p><pre> @XmlRootElement public class SomeClass { @XmlElement(name="part") private final ArrayList&lt;Object&gt;[] list; ... constructor, which fills the list variable }</pre><p> 有人可以告訴我該怎么做嗎? 請。<br><br></p></div></object>

[英]How to marshall ArrayList<Object>[] in JAXB?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM