2013-02-08 32 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