如何删除<! - ?xml ...? - >处理指令

时间:2011-11-22 10:01:31

标签: java xml

我需要从DOM中删除处理指令。我加载了几个文件,合并并保存。但问题是,结果如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<frag>
    Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.
</frag>
<?xml version="1.0" encoding="iso-8859-2" standalone="no"?>
<frag>
    Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.
</frag>
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<frag>
    Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít.
</frag>

我还没有找到<?xml ...?>进程指令可以从DOM中删除或在保存生成的DOM时被忽略的方式。我正在使用Java 6和默认解析器。

2 个答案:

答案 0 :(得分:3)

没有用于删除处理指令的方法。

您的合并过程已中断。我敢打赌,你正在阅读片段文件,只需将字符串连接在一起就可以创建这个例子。

正确的方法是解析每个片段并将要添加的元素添加到最终的DOM中,然后输出。

即使您删除了处理指令,您发布的内容也是无效的XML。我看不到根标签,你必须只有一个。

答案 1 :(得分:1)

您可以使用SAX API删除处理说明 - 例如XMLStreamReader。您可以使用FilteredReaderXMLInputFactory创建StreamFilter

常量XMLStreamConstants.PROCESSING_INSTRUCTION可以帮助您的过滤器识别处理说明并将其保留。

StAX也绝对可以实现类似。

无论技术可行性如何,合并确实看起来像duffymo所暗示的那样。