gpt4 book ai didi

java - 将原始 XmlElement 从 WCF 传递到 Apache CXF 客户端 (basicHttpBinding)

转载 作者:行者123 更新时间:2023-12-01 12:42:36 25 4
gpt4 key购买 nike

WCF 服务在一个方法中返回 System.Xml.XmlElement。这一切都与 .NET 客户端完美配合。

但是,我不确定如何从 Apache CXF 生成的客户端获取该值。返回类型为 MyMethodNameResult,唯一有意义的方法是 getAnysetAny。不知道该怎么处理它们。

我可以获取字符串或流来构建 XML DOM 吗?

最佳答案

在我的例子中,cxf 生成类似的对象

public static class MyObject {
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> content;

public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
}

然后我使用这个函数来获取 xml 字符串

private static String elementToString(final ElementNSImpl doc) {

try {
StringWriter sw = new StringWriter();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

transformer.transform(new DOMSource(doc.getOwnerDocument()), new StreamResult(sw));
return sw.toString();
} catch (Exception ex) {
throw new RuntimeException("Error converting to String", ex);
}
}

你这样调用它

elementToString((ElementNSImpl) myObject.getContent().get(0));

关于java - 将原始 XmlElement 从 WCF 传递到 Apache CXF 客户端 (basicHttpBinding),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24969501/

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