gpt4 book ai didi

java - 如何将对象(JAXB)或 byte[] (来自该对象)转换为 `org.w3c.dom.Element` ?

转载 作者:行者123 更新时间:2023-12-02 10:52:31 24 4
gpt4 key购买 nike

例如,我有 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());
}
}

我的问题:如何将 testbyte[] 转换为 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 对其进行编码。请参阅这个答案:

https://stackoverflow.com/a/9692275/303810

因此您可以避免将其预编码为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com