XML格式缩进标记匹配-Linux

XML格式缩进标记匹配-Linux,xml,linux,bash,ubuntu,xml-formatting,Xml,Linux,Bash,Ubuntu,Xml Formatting,我有一个XML文件,它的格式是相当压缩的,所有的标记都像这样粘在一起 <PersonalData><IndividualDetails><Title>Mr</Title><Gender>Male</Gender><FirstName>Hae</FirstName><Surname>JONES</Surname><Occupation>Banker</Occup

我有一个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>
MrMaleHaeJONESBanker4/6/7600145SD银行日落大道NY335698457
shell中是否有任何命令可以正确格式化标记。如果不是缩进,仅将标记添加到它们自己的行也可以解决我的问题。

xmllint--format
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>
$
$cat test.xml
C
$xmllint—格式test.xml
C
$xmllint—格式test.xml>test.formatted.xml
$cat test.formatted.xml
C
$
-xml-指定输入为格式良好的xml

-q-抑制非必要输出

-i-缩进元素内容

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

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

<a> <b>c</b> </a> C
这对实际文件不起作用。我的XML的文件大小约为583MB。Format选项适用于小文件,但当我将其应用于实际文件时,Bash将终止该操作。有没有关于格式化大文件的想法,以块的形式…583MB?也许您应该为缩进实现自己的SAX处理程序。我该怎么做呢。请告诉我,使用
xmllint
方法需要记住的一点是,它不会保留准确的原始文本。例如,
将转换为
。从技术上讲,这是正确的,但如果您不期望它,它可能会让您感到困惑。您是否实现了处理大文件的解决方案? <a> <b>c</b> </a>