从XML中删除多个XML名称空间

问题描述

我必须从XML文件中删除多个xml名称空间。由于某些要求,我们正在为每个传入消息进行追加。因此,在最终文件中,我们需要删除以下XML名称空间。 所有名称空间都相同。需要删除那些重复的名称空间。

<?xml version="1.0" encoding="UTF-8"?>
<ns0:Test xmlns:ns0="urn:demo:in:file">
<Header><Name>ABC</Name>
 <no>1234</no> 
<FileName>Invoice</FileName>
</Header>
<Detail>
  <Id>
 <Type>1</Type>
 <Customerno>2</Customerno>
 <Group>3</Group>
  </Id>
 </Detail>
 </ns0:Test>
  <?xml version="1.0" encoding="UTF-8"?>
  <ns0:Test xmlns:ns0="urn:demo:in:file">
  <Header>
  <Name>DEF</Name>
  <no>1235</no>
 <FileName>Invoice2</FileName>
</Header>
<Detail><Id>
<Type>2</Type>
<Customerno>3</Customerno>
 <Group>4</Group>
  </Id>
  </Detail>
 </ns0:Test>

在上面的文件中,我们有2个xml命名空间,但是在输出中,它应该是一个xml命名空间,而节点应位于该命名空间下。下面是预期的输出。

<?xml version="1.0" encoding="UTF-8"?>
 <ns0:Test xmlns:ns0="urn:demo:in:file">
<Header>
 <Name>ABC</Name>
 <no>1234</no>
 <FileName>Invoice</FileName>
</Header>
 <Detail>
  <Id>
 <Type>1</Type>
 <Customerno>2</Customerno>
    <Group>3</Group>
      </Id>
  </Detail>
  <Header>
 <Name>DEF</Name>
   <no>1235</no>
  <FileName>Invoice2</FileName>
  </Header>
    <Detail>
     <Id>
     <Type>2</Type>
     <Customerno>3</Customerno>
      <Group>4</Group>
      </Id>
    </Detail>
 </ns0:Test>

请帮助我实现预期的输出。

关于, 贾纳丹

解决方法

您的问题不只是名称空间。看来您正在尝试连接XML文档。但是...

  1. 仅在文档开头而不是中间允许处理指令。因此,添加以该行开头的内容已经很糟糕了。
  2. XML在每个文档中都需要一个顶级元素。如果您在该顶级元素之后添加一些内容,那将再次很糟。

因此,您需要做的是引入一个新的顶层元素,然后将所有文档的顶层元素作为子元素添加到新的顶层。只有这样,您才能考虑名称空间,并尝试使输出效率更高。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...