作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,我有 Java 类 (JAXB):
Test test = new Test();
test.set....
//fill test object
............
现在我需要将此对象转换为 org.w3c.dom.Element
现在我有了可以转换为 byte[]
的转换器:
public <T> byte[] marshal(T value) {
try {
StringWriter sw = new StringWriter();
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(value,sw);
return sw.toString().getBytes();
} catch (JAXBException e) {
throw new RuntimeException(e.getMessage());
}
}
我的问题:如何将 test
或 byte[]
转换为 to org.w3c.dom.Element
?
编辑:
回答评论中的问题为什么我需要它
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.w3c.dom.Element;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"any"
})
@XmlRootElement(name = "MessagePrimaryContent")
public class MessagePrimaryContent {
@XmlAnyElement
protected Element any;
public Element getAny() {
return any;
}
public void setAny(Element value) {
this.any = value;
}
}
我需要将 My 对象设置为 setAny
方法。这样的协议(protocol)和格式。它不是我发明的
最佳答案
首先,我将使用 @XmlAnyElement(lax = true) Object any
,而不是 @XmlAnyElement Element any
。然后,您可以简单地将您的 test
分配给 any
并让 JAXB 对其进行编码。请参阅这个答案:
因此您可以避免将其预编码为 DOM。
<小时/>现在,回答你的问题。
您基本上希望将您的 test
对象编码为 DOM 元素。最简单的方法是编码到 DOMResult
,然后从那里获取元素。
类似于:
marshaller = jaxbContext.createMarshaller();
DOMResult domResult = new DOMResult();
marshaller.marshal(value, domResult);
Node rootNode = domResult.getNode();
// I'm not quite sure that it's always a Document, but it's easy to figure out
final Element rootElement = ((Document) rootNode).getDocumentElement();
关于java - 如何将对象(JAXB)或 byte[] (来自该对象)转换为 `org.w3c.dom.Element` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52057015/
我是一名优秀的程序员,十分优秀!