3
我有一個xml如下。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來完成,但我不太熟悉它。
很少XML處理器將維持屬性間的佈局,因爲空白有微不足道。您可能需要編寫自定義格式化程序。 – Borodin
我想縮進子元素,因爲它更易於理解,並且將屬性放在新行中對版本控制友好。 –