在Qt中读取和使用PHP生成的XML

时间:2010-10-07 23:52:22

标签: xml qt

您好 我正在构建一个Qt应用程序,其中包括显示商店的产品。产品存储在MySQL数据库中,由php函数查询。 PHP函数返回表的内容的XML。 所以,我一直在寻找,但我找不到优雅的问题。 我需要的是: 1.从函数中获取XML(domain.com/blah.php) 2.从XML获取数据 那么,我是否可以像使用对象一样使用XML数据。数据示例如下:

<categories> 
<category> 
    <ID>1</ID> 
    <Category_name>Hrana i pica</Category_name> 
    <Parent_ID>0</Parent_ID> 
</category> 
<category> 
    <ID>2</ID> 
    <Category_name>Kucne potrepstine</Category_name> 
    <Parent_ID>0</Parent_ID> 
</category> 
<category> 
    <ID>3</ID> 
    <Category_name>Ljepota i njega</Category_name> 
    <Parent_ID>0</Parent_ID> 
</category> 
<category> 
    <ID>4</ID> 
    <Category_name>Djecji svijet</Category_name> 
    <Parent_ID>0</Parent_ID> 
</category> 
<category> 
    <ID>5</ID> 
    <Category_name>Cvijece</Category_name> 
    <Parent_ID>0</Parent_ID> 
</category> 
<category> 
    <ID>6</ID> 
    <Category_name>Akcijska prodaja</Category_name> 
    <Parent_ID>0</Parent_ID> 
</category> 
<category> 
    <ID>7</ID> 
    <Category_name>Alkoholna pica</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>8</ID> 
    <Category_name>Bezalkoholna pica</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>9</ID> 
    <Category_name>Delikatesa specijal</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>10</ID> 
    <Category_name>Delikatese / mesne preradevine</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>11</ID> 
    <Category_name>Dijabetski i zdrava hrana</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>12</ID> 
    <Category_name>Dorucak</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>13</ID> 
    <Category_name>Mlijecni, jaja i sir</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>14</ID> 
    <Category_name>Namirnice za pripremu jela</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>15</ID> 
    <Category_name>Pekarski proizvodi</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>16</ID> 
    <Category_name>Slatkisi i grickalice</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>17</ID> 
    <Category_name>Smrznuto</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>18</ID> 
    <Category_name>Svjeza riba</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>19</ID> 
    <Category_name>Svjeze meso</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>20</ID> 
    <Category_name>Svjeze voce i povrce</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>21</ID> 
    <Category_name>Ukiseljena i konzerv. hrana</Category_name> 
    <Parent_ID>1</Parent_ID> 
</category> 
<category> 
    <ID>22</ID> 
    <Category_name>Elektro pribor i medija</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>23</ID> 
    <Category_name>Higijenski i papirnati proizvodi</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>24</ID> 
    <Category_name>Kiosk</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>25</ID> 
    <Category_name>Knjige za odrasle</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>26</ID> 
    <Category_name>Kucanske potrepstine</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>27</ID> 
    <Category_name>Kucni ljubimci</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>28</ID> 
    <Category_name>Party program</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>29</ID> 
    <Category_name>Posudje i oprema za dom</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>30</ID> 
    <Category_name>Sezonski asortiman</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>31</ID> 
    <Category_name>Sportska odjeca i oprema</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>32</ID> 
    <Category_name>Sredstva za pranje i ciscenje</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>33</ID> 
    <Category_name>Skolski i uredski asortiman</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>34</ID> 
    <Category_name>Tekstil i obuca</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>35</ID> 
    <Category_name>Ukrasi i prigodni program</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>36</ID> 
    <Category_name>Uradi sam</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>37</ID> 
    <Category_name>Vrt i kamp</Category_name> 
    <Parent_ID>2</Parent_ID> 
</category> 
<category> 
    <ID>38</ID> 
    <Category_name>Dekorativna kozmetika i parfemi</Category_name> 
    <Parent_ID>3</Parent_ID> 
</category> 
<category> 
    <ID>39</ID> 
    <Category_name>Muska kozmetika</Category_name> 
    <Parent_ID>3</Parent_ID> 
</category> 
<category> 
    <ID>40</ID> 
    <Category_name>Njega kose</Category_name> 
    <Parent_ID>3</Parent_ID> 
</category> 
<category> 
    <ID>41</ID> 
    <Category_name>Njega lica za zene</Category_name> 
    <Parent_ID>3</Parent_ID> 
</category> 
<category> 
    <ID>42</ID> 
    <Category_name>Njega tijela</Category_name> 
    <Parent_ID>3</Parent_ID> 
</category> 
<category> 
    <ID>43</ID> 
    <Category_name>Njega zubi</Category_name> 
    <Parent_ID>3</Parent_ID> 
</category> 
<category> 
    <ID>44</ID> 
    <Category_name>Djecja galanterija</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>45</ID> 
    <Category_name>Djecja hrana</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>46</ID> 
    <Category_name>Djecja kozmetika i higijena</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>47</ID> 
    <Category_name>Djecji svijet - ostalo</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>48</ID> 
    <Category_name>Igracke</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>49</ID> 
    <Category_name>Knjige za djecu</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>50</ID> 
    <Category_name>Tekstil odjevni za bebe</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>51</ID> 
    <Category_name>Trudnice i dojilje</Category_name> 
    <Parent_ID>4</Parent_ID> 
</category> 
<category> 
    <ID>52</ID> 
    <Category_name>Cvijece i bilje</Category_name> 
    <Parent_ID>5</Parent_ID> 
</category> 
<category> 
    <ID>53</ID> 
    <Category_name>Cvjecarski pribor</Category_name> 
    <Parent_ID>5</Parent_ID> 
</category> 
<category> 
    <ID>54</ID> 
    <Category_name>Zemlja</Category_name> 
    <Parent_ID>5</Parent_ID> 
</category> 
<category> 
    <ID>55</ID> 
    <Category_name>Proizvodi na akciji</Category_name> 
    <Parent_ID>6</Parent_ID> 
</category> 

所以,我希望能够做的是例如使用相同的Parent_ID查询所有类别。

有什么想法吗? (对不起,如果这是一个愚蠢的问题,但我无法弄清楚这一点)

2 个答案:

答案 0 :(得分:1)

如何通过HTTP下载文件:http://www.qtforum.org/article/29846/qhttp-problem-with-the-timeout.html

这里的基本要点是使用QUrlQHttp类。启动HTTP请求并连接到QHttp对象的done信号,以便在下载完成时对该文件执行操作。

如何阅读XML文件:http://www.qtforum.org/article/27624/how-to-read-a-xml-file.html

答案 1 :(得分:1)

您可以使用xpath表达式匹配XML中的节点:

number(/category/Parent_ID)=1 # for Parent_ID of 1.

要评估Qt中的XPath表达式,请参阅How do I run XPath queries in QT?