Hiện nay tôi đang marshalling một đối tượng JAXB tới luồng ra với đoạn mã sauLàm thế nào để có được những không gian tên của một đối tượng JAXB
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
ByteArrayOutputStream out = new ByteArrayOutputStream();
marshaller.marshal(new JAXBElement(new QName("hard_coded_namespace", clazz.getSimpleName()), clazz, obj), out);
Tôi muốn thay thế "hard_coded_namespace" với không gian tên chứa trong JAXB " obj "(hoặc một trong các thuộc tính của nó, chúng hiện nay nên chia sẻ cùng một NS).
Bất kỳ ý tưởng nào về cách nhận thông tin NS TRƯỚC KHI đầm lầy? Trong luồng đầu ra, các Không gian tên xuất hiện. Vì vậy, họ đang ở đâu đó trong "obj".
[CẬP NHẬT] Như được chỉ ra trong các câu trả lời bên dưới, tôi không cần đặt thuộc tính JAXB_FRAGMENT. Tôi đã thay đổi nó thành:
JAXB.marshal(new JAXBElement<T>(new QName("hard_coded_namespace", rootName), clazz, jaxbObject), out);
thông tin không gian tên nằm trong 'package-info.java' – Chris
tùy thuộc vào mục đích chung mà bạn muốn giải pháp của mình, không có gì đảm bảo rằng gói-thông tin. lớp sẽ được tạo bởi xjc (xem tùy chọn -npa). – kschneid