我有一个xml如下。
<!DOCTYPE parent [
<!ENTITY entity1 "value">
]>
<main>
<parent attr1="str1"
attr2="str2">
<child childattr1="str3"
childattr2="&entity1;" />
<child childattr1="str4"
childattr2="&entity1;" />
</parent>
</main>
我需要缩进子元素,保留xml文件的其余部分(即不应删除dtd部分和实体,属性应该在新行上)。 xml应该最终看起来像:
<!DOCTYPE parent [
<!ENTITY entity1 "value">
]>
<main>
<parent attr1="str1"
attr2="str2">
<child childattr1="str3"
childattr2="&entity1;" />
<child childattr1="str4"
childattr2="&entity1;" />
</parent>
</main>
我尝试过使用xmllint
和tidy
。 xmllint
缩进子元素,但不保留新行中的属性。另一方面,tidy
可以选择将属性保留在新行中,但不能缩进子元素。我也尝试过使用perl正则表达式。这可能是用XSLT完成的,但我并不熟悉它。
答案 0 :(得分:4)