首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Saxon的DocumentInfo序列化为字符串?

如何将Saxon的DocumentInfo序列化为字符串?
EN

Stack Overflow用户
提问于 2015-12-16 12:35:27
回答 1查看 961关注 0票数 3

如果使用普通的XML,我可以像这样将Document对象序列化为String

代码语言:javascript
运行
复制
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    StringWriter stringWriter = new StringWriter();
    transformer.transform(new DOMSource(document), new StreamResult(stringWriter));
    String result = stringWriter.getBuffer().toString(); 

如果我使用的是S9 API,它是Saxon 9.7 HE的一部分,并且有DocumentInfo对象,我如何将它序列化成String

编辑:下面是一个完整的工作示例,它基于@Michael的答案:

代码语言:javascript
运行
复制
    Processor processor = new Processor(false); // False = does not required a feature from a licensed version of Saxon.
    Serializer serializer = processor.newSerializer();
    // Other properties found here: http://www.saxonica.com/html/documentation/javadoc/net/sf/saxon/s9api/Serializer.Property.html
    serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, "no");
    serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
    XdmNode xdmNode = new XdmNode(documentInfo);
    String result = serializer.serializeNodeToString(xdmNode);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-16 23:24:22

首先,DocumentInfo实际上不是s9api API的一部分:在s9api中,节点由XdmNode对象表示。

序列化DocumentInfo的一种方法就是使用您向我们展示的代码: NodeInfo扩展源代码,因此您可以使用它作为transform()的第一个参数。

但在s9api中,最简单的方法是:

代码语言:javascript
运行
复制
Processor proc = new Processor();
Serializer ser = proc.newSerializer();
ser.setOutputProperty(....);
ser.serializeNode(node);

在该代码中,“节点”是一个XdmNode;如果要使用DocumentInfo,则可以调用构造函数。

代码语言:javascript
运行
复制
new XdmNode(documentInfo);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34312234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档