簡體   English   中英

使用JAXB解組XML到Java

[英]XML to Java with JAXB unmarshalling

我正在使用以下代碼將XML解組到一組Java類(從xsd生成的類)。

JAXBContext jc = JAXBContext.newInstance(BlockType.class);
StreamSource xml = new StreamSource("C:\\Users\\Se\\Desktop\\watch2.xml");
Unmarshaller unmarshaller = jc.createUnmarshaller();
JAXBElement<BlockType> je1 = unmarshaller.unmarshal(xml, BlockType.class);

BlockType cgwt = je1.getValue();

必須解組的XML在其開頭具有這樣的一行:

<test:MessageBlock xsi:schemaLocation="http://www.test.com/Watch/v2.1 Test_WatchSchema_v2.1.xsd">

如果我刪除了test:和xsi:....,XML將正確地解組。 但是,如果我讓他們得到

[org.xml.sax.SAXParseException: The prefix "test" for element "test:CargoWatchMessageBlock" is not bound.]

我怎樣才能解決這個問題 ?

如果使用了test前綴,則XML文檔中應該有一個xmlns:test屬性。 如果沒有該屬性聲明前綴,則應該從文檔中刪除該前綴以使其生效。


UPDATE

我不控制文檔,所以我想我必須找到一些解決方法來刪除測試:前綴和xsi:在解組之前。

下面是一個示例的鏈接,該示例應該可以幫助您構建所需的內容。 它利用JAXB的UnmarshallerHandler和SAX解析器將前綴視為元素名稱的父級。

暫無
暫無

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

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