作者 主題: 關於XML請教  (閱讀 8039 次)

0 會員 與 1 訪客 正在閱讀本文。

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
關於XML請教
« 於: 2009-09-30 01:52 »
我利用xml.dom.minidom撰寫程式碼
我的需求是依照順序取得<device>...</device>中的tag及其內容
不過我的tag可能會是 photo , viedo, swf
我目前找到的方式,只能讓我分別取得photo, viedo, swf
而不能讓我直接依照順序取得這三種資料

有沒有人能指教一下? 怎麼做比較切合實際?


代碼: [選擇]
xmlData = urllib.urlopen(getPhotoXml)
    data = xml.dom.minidom.parse(xmlData)
    if data.getElementsByTagName('photo') :
        for node in data.getElementsByTagName('photo'):
            if os.path.exists('content/image/' + os.path.basename(node.getAttribute('photo_url'))
                              ) == False :
                os.system('cd content/image/; wget ' + node.getAttribute('photo_url') + ' > /dev/null' )
    if data.getElementsByTagName('viedo') :
        for node in data.getElementsByTagName('viedo'):
            os.system('cd content/viedo; wget ' + node.getAttribute('photo_url') )

我的xml檔如下

<?xml version='1.0'?>
<rsp stat='ok'>
<device serial_no='00000000000000' device_class='2' photos='20' total='20'>
   <photo url_no='3127' thumbnail_url='URL' photo_url='URL'/>
   <viedo url_no='4127' thumbnail_url='URL' photo_url='URL'/>
   <swf url_no='1231' thumbnail_url='URL' photo_url='URL'/>
   <viedo url_no='414' thumbnail_url='URL' photo_url='URL'/>
</device>



洋蔥叔叔

  • 榮譽博士
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: 關於XML請教
« 回覆 #1 於: 2009-09-30 04:00 »
Python 超不熟,不過 XML DOM 常在用,剛花點時間看了一下文件
可以先用 getElementsByTagName  把 <device> 抓出來之後,再拿他的 childNode 屬性就可以拿到 <device> 下第一層的 Node
預設會按照檔案裏的順序出現,最後再用 localName 屬性來判斷是哪一個就好了:

代碼: [選擇]
xmlData = urllib.urlopen(getPhotoXml)
data = xml.dom.minidom.parse(xmlData)

for node in data.getElementsByTagName('device'):
    for childNode in node.childNodes:
        if childNode.nodeType == xml.dom.Node.ELEMENT_NODE:
            print(childNode.localName + ' - ' + childNode.getAttribute('photo_url'))


micmic3

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
回覆: 關於XML請教
« 回覆 #2 於: 2009-09-30 18:38 »
那一天才在講有人把 python Jquery 的實做做出來了
http://pypi.python.org/pypi/pyquery
叫 pyquery
用這讀 xml 應該會很快....

不然梁大用 phpquery 應該也很容易上手
http://code.google.com/p/phpquery/

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
回覆: 關於XML請教
« 回覆 #3 於: 2009-09-30 19:32 »
Python 超不熟,不過 XML DOM 常在用,剛花點時間看了一下文件
可以先用 getElementsByTagName  把 <device> 抓出來之後,再拿他的 childNode 屬性就可以拿到 <device> 下第一層的 Node
預設會按照檔案裏的順序出現,最後再用 localName 屬性來判斷是哪一個就好了:



感謝洋蔥大大!
原來是利用localName來判斷,我完全達標了!

感謝!

Lman