gpt4 book ai didi

java - XMLSerializer 和 OutputFormat 已弃用

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:13 25 4
gpt4 key购买 nike

我正在尝试从 S.O. 周围的 Java 专家那里获得一些帮助。关于这个问题。我在一个长期项目中遇到了 XMLSerializer 和 OutputFormat 的旧实现...我想知道是否有人可以提供有关该做什么的指示,我们将不胜感激...

我试过这个aproach但我无法用 LSSerializer 替换...

问题...

enter image description here所以基本上有人在项目中直接使用来自 IBM 内部 JRE 的类 XMLSerializer & OutputFormat...我如何通过使用 org.w3c 将这种和平的代码转换为不受 WAS(Websphere Aplication Server)影响的依赖项?

...
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
...
public String toString() {
StringWriter res = new StringWriter();
OutputFormat format = new OutputFormat(doc);//doc is type org.w3c.dom.Document
format.setIndenting(true);
XMLSerializer serializer = new XMLSerializer(res, format);

try {
serializer.serialize(doc);
} catch (IOException e) {
res.write(e.getMessage());
e.printStackTrace();
}
return res.toString();
}

编辑

后来我设法用我之前提到的方法做到了......这几乎是一个副本......

...
import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
...

public String toString() {
StringWriter stringWriter = new StringWriter();
String subscrXML=null;
DOMImplementationRegistry registry = null;
DOMImplementationLS impls = null;
LSOutput domOutput = null;
LSSerializer domWriter = null;
try {

registry = DOMImplementationRegistry.newInstance();

impls = (DOMImplementationLS)registry.getDOMImplementation("LS");

//Prepare the output
domOutput = impls.createLSOutput();
domOutput.setEncoding(java.nio.charset.Charset.defaultCharset().name());
domOutput.setCharacterStream(stringWriter);
domOutput.setEncoding("UTF-8");

//Prepare the serializer
domWriter = impls.createLSSerializer();
DOMConfiguration domConfig = domWriter.getDomConfig();
domConfig.setParameter("format-pretty-print", true);
domConfig.setParameter("element-content-whitespace", true);
domWriter.setNewLine("\r\n");
domConfig.setParameter("cdata-sections", Boolean.TRUE);

//And finaly, write
domWriter.write(doc, domOutput);
subscrXML = domOutput.getCharacterStream().toString();
//DOMStringList dsl=domConfig.getParameterNames();
System.out.println(subscrXML);
/*
// Just for curiosity....
for(int i=0;i<dsl.getLength();i){
System.out.println(dsl.item(i)" = ["domConfig.getParameter(dsl.item(i))"]");
}*/

} catch (ClassCastException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}


return subscrXML;
}

最佳答案

导入 org.w3c.dom.ls.* 并使用 LLSSerializer 代替!您还需要调用 DOMImplementationLS,以便创建序列化程序。

关于java - XMLSerializer 和 OutputFormat 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55729019/

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