如何在合并XML文件后删除多个XML声明和结束标记?

时间:2016-07-06 15:54:13

标签: xml xslt

主xml文件由许多XML文件组成,这些文件一个接一个地插入。所有文件都具有相同的结构。但是,插入的文件仍然具有原始声明,打开和关闭标记。这种情况会在稍后阶段产生错误。 XSLT如何在文件中间删除多余的声明,打开和关闭标记?

主文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<BIBDB><GROUP><A>
<-- xml data 1 -->    
</A></GROUP></BIBDB>    

<?xml version="1.0" encoding="utf-8"?>
<BIBDB><GROUP><A>
<-- xml data 2 -->
</A></GROUP></BIBDB>

<?xml version="1.0" encoding="utf-8"?>
<BIBDB><GROUP><A>
<-- xml data 3 -->
</A></GROUP></BIBDB>

预期产出:

<?xml version="1.0" encoding="utf-8"?>
<BIBDB><GROUP><A>
<-- xml data 1 -->    
</A>

<A>
<-- xml data 2 -->
</A>

<A>
<-- xml data 3 -->
</A></GROUP></BIBDB>

1 个答案:

答案 0 :(得分:2)

一旦您以这种方式创建了主文件,您就无法使用基于兼容XML解析器的任何工具,因为您的主文件根本不是XML。

格式良好的XML不能有多个根元素。它也不能有多个XML声明(或者除了文件顶部以外的任何地方的XML声明)。

所以,你的选择是:

  1. 备份,正如Martin Honnen在评论中提到的那样,并重新撰写 您通过兼容的原始(可能是格式良好的)XML文档 XML工具,如XSLT。
  2. 将文件处理为文本,而不是XML,并修复问题 防止它成为格式良好的XML。这不可能 容易,特别是在一般情况下,但足够狭窄 可能适用于任何特定情况的约束 以这种方式取得脆弱的成功。
  3. 我强烈推荐#1超过#2。