gpt4 book ai didi

Java XML : using DOM with StAX to construct a document

转载 作者:数据小太阳 更新时间:2023-10-29 02:11:31 25 4
gpt4 key购买 nike

我正在使用 StAX 使用 XMLStreamWriter 构建 XML 文档.

但是,我的文档的某些部分很难逐个调用 XMLStreamWriter 的方法,使用 DOM 构建一个小的文档片段,然后将其写出来会更容易。

我知道如何使用 DOM,但这是我的问题:有没有简单的方法来获取 Element对象并将其写出到 XMLStreamWriter?

我可能会想出如何“连接”这两种方法,但它似乎很乏味而且应该已经有一些东西了。 (走另一条路似乎微不足道:http://blogs.oracle.com/venu/entry/constructing_dom_using_stax_writers)

最佳答案

没关系,我得到了一些涵盖基础知识的东西(不确定它是否适用于命名空间,但它似乎适用于简单的 DOM 节点树):

public static void writeDomToXmlStreamWriter(Node node, XMLStreamWriter xmlw) throws XMLStreamException
{
if (node != null)
{
switch (node.getNodeType())
{
case Node.ELEMENT_NODE:
{
Element element = (Element)node;
if (element.getPrefix() != null)
xmlw.writeStartElement(element.getPrefix(), element.getLocalName(), element.getNamespaceURI());
else if (element.getNamespaceURI() != null)
xmlw.writeStartElement(element.getNamespaceURI(), element.getLocalName());
else if (element.getLocalName() != null)
xmlw.writeStartElement(element.getLocalName());
else
xmlw.writeStartElement(element.getNodeName());
writeDomAttributesToXmlStreamWriter(element, xmlw);
for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
writeDomToXmlStreamWriter(child, xmlw);
xmlw.writeEndElement();
}
break;
case Node.TEXT_NODE:
{
xmlw.writeCharacters(node.getTextContent());
}
}
}
}

private static void writeDomAttributesToXmlStreamWriter(Element element, XMLStreamWriter xmlw) throws XMLStreamException
{
NamedNodeMap map = element.getAttributes();
for (int L = map.getLength(), i = 0; i < L; ++i)
{
Node attr = map.item(i);
if (attr.getPrefix() != null)
xmlw.writeAttribute(attr.getPrefix(), attr.getLocalName(), attr.getNamespaceURI(), attr.getNodeValue());
else if (attr.getNamespaceURI() != null)
xmlw.writeAttribute(attr.getNamespaceURI(), attr.getLocalName(), attr.getNodeValue());
else if (attr.getLocalName() != null)
xmlw.writeAttribute(attr.getLocalName(), attr.getNodeValue());
else
xmlw.writeAttribute(attr.getNodeName(), attr.getNodeValue());
}
}

关于Java XML : using DOM with StAX to construct a document,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199688/

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