2010-07-26 82 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