gpt4 book ai didi

xml:如何缩进子元素但将属性保留在新行上

转载 作者:数据小太阳 更新时间:2023-10-29 02:26:53 24 4
gpt4 key购买 nike

我有一个 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>

我尝试过使用 xmllinttidyxmllint 正在缩进子元素,但它不会在新行中保留属性。另一方面,tidy 可以选择将属性保留在新行中,但它无法缩进子元素。我也尝试过使用 perl 正则表达式。这可能可以通过 XSLT 来完成,但我并不精通它。

最佳答案

在我看来XML::Twigxml_pp实用程序几乎可以用它的 indented_a 选项做你想做的事:

$ xml_pp -s indented_a foo.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:如何缩进子元素但将属性保留在新行上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17343707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com