2012-04-07 63 views
0

我有一個小的xml文檔,我需要使用xmllint提取一些值。我能夠通過使用xmllint --shell xmlfilename命令來瀏覽xml層次結構。但我無法提取這些值。我不想使用grep /任何模式匹配命令,因爲這已經完成並且是成功的。我將不勝感激任何關於xmlliint的幫助。這是我的文件在PNG格式。我想提取300 $和500 $('值')。使用xmllint從xml文件中提取數據

<?xml version="1`.`0" encoding="ISO-8859-1"?> 
<adi> 
    <asset> 
     <electronics item="Mobile" name="Nokia" value="300$" /> 
     <electronics item="Mobile" name="Sony" value="500$" /> 
    </asset> 
</adi> 

另一個疑問是,這兩個集合是不同的表示形式嗎?

<?xml version="1.0 encoding="ISO-8859-1"?> 
<adi> 
    <asset> 
     <electronics> 
      <item> Mobile </item> 
      <name>Nokia</name> 
      <value>300$</value> 
     </electronics> 
     <electronics> 
      <item> Mobile </item> 
      <name>Sony</name> 
      <value>500$</value> 
     </electronics> 
    </asset> 
</adi> 
+1

看看這種任務的xmlstarlet。或者注意你的標籤下面的follwer計數(當你翻轉它們)併爲xml或xmlstarlet添加一個標籤。祝你好運。 – shellter 2012-04-16 05:21:27

回答

-1

晚,但同時搜索標籤xmllint比賽的第一頁,我現在回答你;)

使用--xpath代替--xpath像下面

xmllint --xpath '//electronics/value/text()' second-xml_file.xml 
+1

xpath不工作 – 2013-11-06 10:21:09

+0

xpath工作,這是破壞的xml源。在第一行看到缺失的'「' – 2013-11-06 13:01:18

+5

它的說法--xpath選項在xmllint中不可用 – 2013-11-07 04:46:59

0

關於你的第二個問題,這兩個代碼段做而不是代表相同的XML內容。屬性和子元素不相同。子元素可以是任意XML樹的根元素,但屬性是原子的。

例如,I可以修改第二片段是這樣的:

<?xml version="1.0 encoding="ISO-8859-1"?> 
<adi> 
    <asset> 
     <electronics> 
      <item> 
       Mobile 
       <sub-item>Phone</sub-item> 
      </item> 
      <name>Nokia</name> 
      <value>300$</value> 
     </electronics> 
     <electronics> 
      <item> Mobile </item> 
      <name>Sony</name> 
      <value>500$</value> 
     </electronics> 
    </asset> 
</adi> 

其中我已經加入<sub-item>Phone</sub-item>到第一<item>元件。 但是,如果item是一個屬性,則不存在等效項,如第一個片段中所示。