【问题标题】:XML formatting Indentation Tags Matching - LinuxXML 格式缩进标签匹配 - Linux
【发布时间】:2012-08-11 12:21:18
【问题描述】:

我有一个格式非常压缩的 XML 文件,所有标签都像

一样粘在一起
<PersonalData><IndividualDetails><Title>Mr</Title><Gender>Male</Gender><FirstName>Hae</FirstName><Surname>JONES</Surname><Occupation>Banker</Occupation><DateofBirth>4/6/76</DateofBirth><LastKnownAddress></LastKnownAddress><LastKnownPostCode>00145</LastKnownPostCode><OtherNames></OtherNames></IndividualDetails><OccupationDetails><Company>SD Bank</Company><CompanyAddress>Sunset Boulevard NY</CompanyAddress><ContactNo>335698457</ContactNo></OccupationDetails></PersonalData>

shell中是否有任何命令可以正确格式化标签。如果不缩进,只将标签添加到自己的行也可以解决我的问题。

【问题讨论】:

    标签: xml linux bash ubuntu xml-formatting


    【解决方案1】:
    xmllint --format <your-xml-file>
    

    例子

    $ cat test.xml
    <a><b>c</b></a>
    $ xmllint --format test.xml
    <a>
      <b>c</b>
    </a>
    $ xmllint --format test.xml > test.formatted.xml
    $ cat test.formatted.xml
    <a>
      <b>c</b>
    </a>
    $
    

    【讨论】:

    • 这不适用于实际文件。我的 XML 文件大小约为 583 MB。格式选项适用于小文件,但是当我将其应用于实际文件时,Bash 会终止操作。格式化大文件的任何想法,在块左右......
    • 583 MB?也许您应该实现自己的 SAX 处理程序来进行缩进。
    • 我该怎么做。请指导我
    • xmllint 方法要记住的一件事是它不会保留确切的原始文本。例如。 &lt;a&gt;&lt;/a&gt; 将转换为 &lt;a/&gt;。从技术上讲,这是正确的,但如果您没有预料到,它可能会吸引您。
    • 您是否实施了处理大文件的解决方案?
    【解决方案2】:
    tidy -xml -i -q
    

    -xml - 指定输入是格式良好的 XML

    -q - 抑制不必要的输出

    -i - 缩进元素内容

    tidy 可以处理文件和标准输入/标准输出

    echo '<a><b>c</b></a>' | tidy -xml -i -q
    

    会产生

     
          c
        

    【讨论】:

      猜你喜欢
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多