如何将非转义XML写入XMLStreamWriter?

时间:2013-11-15 10:06:14

标签: java xml stax

我有许多小的XML块,应该作为子元素嵌入到一个大的XML中。有没有办法将这些块写入XMLStreamWriter而不转义它们?

3 个答案:

答案 0 :(得分:7)

以下是处理此问题的几个选项:

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

您可以使用javax.xml.transform.Transformer将代表您的XML片段的StreamSource转换为包裹StAXResult的{​​{1}}。

选项#2 - 直接与XMLStreamWriter

进行交互

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

bar

答案 1 :(得分:2)

var obj = { "ES": { "130": { "code": "A Coruсa", "name": "A Coruña" }, "131": { "code": "Alava", "name": "Alava" }, }, "CH": { "104": { "code": "AG", "name": "Aargau" } } },
    result = Object.keys(obj).reduce(function (r, k) {
        return r.concat(Object.keys(obj[k]).map(function (kk) {
            return obj[k][kk];
        }));
    }, []);

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

From here

答案 2 :(得分:1)

woodstox有一个stax实现,他们的XMLStreamWriter2类有一个writeRaw()调用。我们有同样的需求,这给了我们一个非常好的解决方案。