2

我正在使用 SAX 解析器来解析我的 XML 文件。我想添加一个这样的新元素。

enter code here
<data>
<accounts>
    <account id="1">
        <firstName>aaaa</firstName>
        <lastName>bbbb</lastName>
        <accountNumber>12342344</accountNumber>
    </account>
</accounts>

我想让我的上层 xml 变成这样:

enter code here
<data>
<accounts>
    <account id="2">
        <firstName>hgff</firstName>
        <lastName>lfghdf</lastName>
        <accountNumber>2344</accountNumber>
    </account>
                   <account id="1">
        <firstName>asdf</firstName>
        <lastName>gen</lastName>
        <accountNumber>144</accountNumber>
    </account>
</accounts>
</data>
4

3 回答 3

2

SAX 解析器提供了一个事件驱动的框架来解析您的 xml 文件。我的意思是获取一个 xml 文件可以帮助您将信息提取到您的内部存储中。它不能帮助您生成 xml。DOM 解析器框架通常确实具有 xml 生成功能。没有自己的内部存储的 SAX 解析器没有。

于 2013-10-29T12:56:47.087 回答
1

使用 SAX 非常有效,但在编程工作方面非常耗费人力。我不清楚你是否知道这一点。

在 SAX 过滤器中实现这种转换当然很容易,我不清楚为什么你会觉得它很困难。也许您需要阅读更多内容:Elliotte Rusty Harold 关于 Java 和 XML 的书,如果我没记错的话,有一个关于编写 SAX 应用程序的优秀章节。

于 2013-10-29T15:03:51.937 回答
0

SAX Parser 的问题实际上提供了一个按字母顺序排列的属性列表,而不是按插入的原始元素的顺序:

StringWriter writer = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(newElement), new StreamResult(writer));
InputStream is = new ByteArrayInputStream(writer.toString().getBytes());
saxParser.parse(is, handler);
于 2021-09-22T13:01:15.670 回答