在bash中生成XML,需要一些有效的想法

时间:2012-06-04 15:44:24

标签: xml bash shell xml-generation

我需要在bash中生成一个XML文件(我是bash /脚本语言的新手,尽管在C / C ++ / UNIX上工作了一段时间)。现在,我正在生成这样的东西,这是非常平坦的

st='<'
et='>'
sl='/'
-------------------
stag() {
      text=$st$1$et 
      echo $text >> output_file
}
--------------------
etag() {
      text=$sl$1
      stag $text
}
--------------------
attr() {
      text=$1
      echo $text >> output_file
}
--------------------

#--Function Call
stag "tag"
attr "xml"
etag "tag"

--------------------

#--output
<tag>xml</tag>

在这一点上,我觉得有很多机会犯错误,并且在C ++编码很长时间后,我认为应该有一种更好的结构化代码方式......任何想法都值得赞赏....或任何你认为的材料,我应该先学习,请在这里发帖....谢谢......

2 个答案:

答案 0 :(得分:3)

您正在寻找xmlstarlet之类的内容。 depyx 子命令允许您将PYX markup转换为XML。

这可能足以用于您的原型设计。如果没有,您可能需要在Ruby,Python或Perl中查看功能更全面的XML库。

答案 1 :(得分:0)

引用字符串通常更容易,而不必为特殊字符使用特殊变量,例如,而不是

text=$st$1$et
echo $text

只需使用

echo "<$1>"

或     printf“&lt;%s&gt;” $ 1

至于结构,bash确实有可能用于属性的数组,但是将它们传递给函数的唯一方法是按名称,然后你必须跳过箍来获取值:

a=(foo bar baz)
f() {
  eval printf "\${$1[1]}"
}
f a
=> bar