2010-07-26 65 views
1

我想通過這個XML循環來專門到count字段。最簡單的方法來閱讀這個XML

什麼是最有效的方法來做到這一點?我不介意使用庫,只要它們不需要root訪問權限即可安裝,因爲我在共享主機上。使用圖書館應該是更好的做法還是相反?

<category> 
    <name>Category 1</name> 
    <subcategories> 
     <subcategory> 
      <name>Subcategory 1.1</name> 
      <count>18</count> 
     <subcategory> 
     <subcategory> 
      <name>Subcategory 1.2</name> 
      <count>29</count> 
     <subcategory> 
    <subcategories> 
<category> 

<category> 
    <name>Category 2</name> 
    <subcategories> 
     <subcategory> 
      <name>Subcategory 2.1</name> 
      <count>18</count> 
     <subcategory> 
     <subcategory> 
      <name>Subcategory 2.2</name> 
      <count>29</count> 
     <subcategory> 
    <subcategories> 
<category> 
+5

什麼語言?什麼平臺?順便說一句,這不是有效的XML。沒有根元素。 – Oded 2010-07-26 15:30:38

+0

對不起,我正在使用php – stacker 2010-07-26 15:36:43

+0

我太懶了,找不到合適的副本。看看[我以前關於PHP的DOM擴展和XML的一些答案](http://stackoverflow.com/search?q=user%3A208809+xml+dom)。 – Gordon 2010-07-26 15:43:36

回答

3

做一個簡單的XPATH查詢,你可以得到所有count標籤用一句話來。如果您正在使用訪問/解析XML的庫爲您提供XPATH API。

一個簡單的Python例子(this SO問題的啓發)可以通過:

import libxml2 

doc = libxml2.parseFile("tst.xml") 
ctxt = doc.xpathNewContext() 
res = ctxt.xpathEval("count") 
// do something with res here (should contain count nodes) 
doc.freeDoc() 
ctxt.xpathFreeContext() 

因爲你剛剛加入PHP的問題,here是如何做PHP XPATH的鏈接。

+2

你打敗了我:) 但堆棧器真的需要添加一個根元素到他/她的XML樣本中,然後使用類似// //子類別/ count – funkymushroom 2010-07-26 15:36:08

2

我使用Linq到XML。但是,您尚未說明開發平臺的事實使其無法回答。

+0

True。如果你使用.NET 3,LinqToXML將比XPATH更好(恕我直言)。 – 2010-07-26 15:39:16