2

我需要在 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++ 编码这么久之后,我认为应该有一种更好的结构化编码方式......任何想法都值得赞赏......或者你认为的任何材料,我应该先学习,请在这里发帖......谢谢......

4

2 回答 2

3

您正在寻找类似xmlstarlet的东西。depyx命令允许您将PYX 标记转换为 XML。

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

于 2012-06-04T16:08:49.630 回答
0

通常只引用你的字符串而不是对特殊字符使用特殊变量更容易,例如,而不是

text=$st$1$et
echo $text

只需使用

echo "<$1>"

或 printf "<%s>" $1

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

a=(foo bar baz)
f() {
  eval printf "\${$1[1]}"
}
f a
=> bar
于 2012-06-04T17:37:19.703 回答