Tôi có một file XML:JAXB: Làm thế nào tôi có thể unmarshal XML mà không gian tên
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object>
<str>the type</str>
<bool type="boolean">true</bool>
</object>
Và tôi muốn unmarshal nó đến một đối tượng của lớp dưới
@XmlRootElement(name="object")
public class Spec {
public String str;
public Object bool;
}
Làm thế nào tôi có thể làm điều này ? Trừ khi tôi chỉ định các không gian tên (xem bên dưới), nó không hoạt động.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object>
<str>the type</str>
<bool xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:type="xs:boolean">true</bool>
</object>
Cảm ơn phản hồi của bạn, Blaise. Tôi ổn với việc có các không gian tên. Nhưng có thể không có không gian tên trong XML (vì nó sẽ đối mặt với người dùng dev) nhưng giữ thông tin đó với chú thích lớp Java, để khi jaxb phân tích cú pháp XML, nó thấy "type" và biết "aha, nó là của không gian tên 'xsi' theo khai báo lớp Java ". Tương tự với "xs: boolean". Bạn có thấy tôi đang nói gì không? Hoặc nó vẫn không thể? Tôi cần điều này vì người dùng dev của chúng ta sẽ tạo ra các khai báo XML như vậy và chúng ta cần phải điều chỉnh chúng thành Java. – Andrey
@Andrey - Bạn có thể thực hiện công việc này, dưới đây là một cách tiếp cận bạn có thể làm cho sự so sánh. –
Xin chào Blaise. Việc loại bỏ một không gian tên cho thuộc tính "type" đã làm việc tuyệt vời, THANKS A LOT !!!, nhưng làm thế nào tôi có thể loại bỏ khai báo không gian tên "xs" cho giá trị của thuộc tính "type" - "xs: boolean". Tôi đã chơi với việc ghi đè một số phương thức StreamReaderDelegate, nhưng không thành công. – Andrey