2013-02-08 52 views
3

我试图构造一个XPath参数在程序xmllint(Bash的shell脚本中使用)使用,将内返回可用标签列表一个标签(虽然没有列出子标签)。XPath来列出可用标签的非递归(shell脚本中使用xmllint)

这里的排序XML的,我有:

<functionInformation> 
    <class> 
     setup 
    </class> 
    <description> 
     This is a natural language description of this function. 
    </description> 
    <prerequisiteFunctions> 
     myFunction1 
     myFunction2 
    </prerequisiteFunctions> 
    <prerequisitePrograms> 
     myProgram1 
     myProgram2 
    </prerequisitePrograms> 
</functionInformation> 

此XML存储在Bash变量functionInformation。

,我想在这个XML使用xmllint时有输出如下:

class 
description 
prerequisiteFunctions 
prerequisitePrograms 

我要指出,我想的标签以非递归的方式返回(我不希望所有列出的可用标签或子标签)。

我的方式访问使用xmllint标签的信息,如下列:

descriptionFunctionInformation="$(echo "${functionInformation}"\ 
       | xmllint --xpath '/functionInformation/description/text()' -\ 
       | xargs -i echo -n "{}")" 

你能指出我在正确的方向上我如何可以建立一个XPath(或类似的东西)返回我需要的信息?

回答

1

您可以使用xmlstarlet

xmlstarlet sel -t -m '/*/*' -v 'concat(name(.)," ")' < xmlfile 
+0

这是伟大的。非常感谢你的协助! – d3pd 2013-02-12 19:15:48