加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将未转义的XML写入XMLStreamWriter?

发布时间:2020-12-16 05:35:27 所属栏目:百科 来源:网络整理
导读:我有一些小的 XML块,应该作为子元素嵌入到一个大的XML中.有没有办法将这些块写入XMLStreamWriter而不转义它们? 以下是处理此问题的几个选项: 选项#1 – 使用javax.xml.transform.Transformer 您可以使用javax.xml.transform.Transformer将表示XML片段的Str
我有一些小的 XML块,应该作为子元素嵌入到一个大的XML中.有没有办法将这些块写入XMLStreamWriter而不转义它们?
以下是处理此问题的几个选项:

选项#1 – 使用javax.xml.transform.Transformer

您可以使用javax.xml.transform.Transformer将表示XML片段的StreamSource转换为包装XMLStreamWriter的StAXResult.

选项#2 – 直接与OuputStream交互

或者,您可以执行以下操作.您可以利用flush()强制XMLStreamWriter输出其内容.然后你会注意到我执行xsw.writeCharacters(“”)这会强制start元素以bar结束,然后再将嵌套XML作为String写入.需要刷新下面的示例代码以正确处理编码问题.

import java.io.*;
import javax.xml.stream.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        OutputStream stream = System.out;

        XMLOutputFactory xof = XMLOutputFactory.newFactory();
        XMLStreamWriter xsw = xof.createXMLStreamWriter(stream);

        xsw.writeStartDocument();
        xsw.writeStartElement("foo");
        xsw.writeStartElement("bar");

        /* Following line is very important,without it unescaped data 
           will appear inside the <bar> tag. */
        xsw.writeCharacters("");
        xsw.flush();

        OutputStreamWriter osw = new OutputStreamWriter(stream);
        osw.write("<baz>Hello World<baz>");
        osw.flush();

        xsw.writeEndElement();
        xsw.writeEndElement();
        xsw.writeEndDocument();
        xsw.close();
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读