当前位置: 首页 > 面试题库 >

Bash,删除空的XML标签

孟建木
2023-03-14
问题内容

我需要一些帮助,使用bash工具解决几个问题

  1. 我想从文件中删除空的xml标记,例如:
<CreateOfficeCode>
     <OperatorId>ve</OperatorId>
     <OfficeCode>1234</OfficeCode>
     <CountryCodeLength>0</CountryCodeLength>
     <AreaCodeLength>3</AreaCodeLength>
     <Attributes></Attributes>
     <ChargeArea></ChargeArea>
</CreateOfficeCode>

成为:

     <CreateOfficeCode>
          <OperatorId>ve</OperatorId>
          <OfficeCode>1234</OfficeCode>
          <CountryCodeLength>0</CountryCodeLength>
          <AreaCodeLength>3</AreaCodeLength>
     </CreateOfficeCode>

为此,我已经通过此命令这样做

    sed -i '/><\//d' file

并不是那么严格,它更像是一个把戏,更合适的方法是找到<pattern></pattern>并删除它。建议?

  1. 二,如何去:
     <CreateOfficeGroup>
           <CreateOfficeName>John</CreateOfficeName>
           <CreateOfficeCode>
           </CreateOfficeCode>
     </CreateOfficeGroup>

至:

     <CreateOfficeGroup>
           <CreateOfficeName>John</CreateOfficeName>
     </CreateOfficeGroup>
  1. 整体而言?从:
     <CreateOfficeGroup>
           <CreateOfficeName>John</CreateOfficeName>
           <CreateOfficeCode>
                <OperatorId>ve</OperatorId>
                <OfficeCode>1234</OfficeCode>
                <CountryCodeLength>0</CountryCodeLength>
                <AreaCodeLength>3</AreaCodeLength>
                <Attributes></Attributes>
                <ChargeArea></ChargeArea>
           </CreateOfficeCode>
           <CreateOfficeSize>
                <Chairs></Chairs>
                <Tables></Tables>
           </CreateOfficeSize>
     </CreateOfficeGroup>

至:

     <CreateOfficeGroup>
           <CreateOfficeName>John</CreateOfficeName>
           <CreateOfficeCode>
                <OperatorId>ve</OperatorId>
                <OfficeCode>1234</OfficeCode>
                <CountryCodeLength>0</CountryCodeLength>
                <AreaCodeLength>3</AreaCodeLength>
           </CreateOfficeCode>
     </CreateOfficeGroup>

您可以个人回答问题吗?非常感谢你!


问题答案:
sed '#n
    1h;1!H
    $ { x
    :remtag
      s#\(\n* *\)*<\([^>]*>\)\( *\n*\)*</\2##g
      t remtag

      p
      }' YourFile

(posix版本--posix,例如GNU sed)

  • 递归地将空标签从下杆移到上杆,直到不再有空标签
  • 不是XML解析器,因此类似<tag1 prop="<tag2></tag2>"> ...的内容也会删除prop内容以及xml允许的其他任何内容。


 类似资料:
  • 问题内容: 我正在寻找一个简单的Java代码段,以从(任何)XML结构中删除空标签 应该变成 问题答案: 我想知道使用XOM库这样做是否容易,并尝试一下。 事实证明这很容易: 这可能无法正确处理所有极端情况,例如完全空的文档。对于原本为空但具有属性的元素该怎么办? 如果要保存带有属性的XML标签,我们可以在方法’handleNode’中添加以下检查: 另外,如果xml有两个或多个空标记,则一个接一

  • 问题内容: 题 如何在PHP中删除空的xml标记? 例: XML结果: 我想要的是! 不含空标签(如“ tag3”)的XML 谢谢! 问题答案: 您可以将XPath与谓词 一起使用,以选择所有没有子节点的元素。 版画

  • 我试图通过StringBuilder传递一个XML对象,以便与对象进行比较,以符合我的需要。 我想知道是否有一种很好的方法可以从整个字符串中删除特定的标记。下面我准备了一个例子: 原件: 期望的结果: 所以基本上,我想删除id、state和整个注释,并关闭ApprovalItem标记(或者只删除所有斜杠)。 有什么想法吗?提前感谢:) 乔纳斯

  • 问题内容: 我有一个xml,如下所示: 现在,我想删除标记,但在此处保留内容“ ABCD”。或者有没有一种方法可以使用java从整个XML文件中删除。请帮忙。谢谢。 问题答案: 使用DOM4J或SAX解析器解析文档 从标签中获取价值 从值中删除所有html标签 JSoup三通 字符串替换 将新值设置为XML字体标签

  • 问题内容: 如何在Python 2.6中删除XML字符串中的空格和换行符?我尝试了以下软件包: etree:此代码段保留原始空格: 我不能使用将提供参数的Python 2.7 。 渺小:一样: 问题答案: 最简单的解决方案可能是使用lxml,您可以在其中设置解析器选项以忽略元素之间的空白: 这可能足以满足您的需求,但是有些警告是安全的: 这只会删除元素之间的空格节点,并尽量不要删除内容混合的元素内

  • 我试图使用以下代码使用XMLModifier删除一些节点。我以中间的空白结束。我怎么才能摆脱这个? } Sample.xml 我尝试使用以下代码,而不是xmlModifier.remove() 它失败,出现以下异常:- 注意:-使用vtd-xml_2_13.jar执行的示例代码