1 votes

La façon la plus simple de lire ce XML

J'essaie de parcourir ce XML en boucle pour atteindre spécifiquement les éléments suivants count champs.

Quel est le moyen le plus efficace de le faire ? L'utilisation de bibliothèques ne me dérange pas tant qu'elles ne nécessitent pas un accès root pour être installées, car je suis sur un hébergement partagé. L'utilisation de bibliothèques est-elle censée être une meilleure pratique ou l'inverse ?

<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>

3voto

Pablo Santa Cruz Points 73944

Faire un simple XPATH vous pouvez obtenir tous les count avec une seule phrase. À condition que la bibliothèque que vous utilisez pour accéder au XML et l'analyser vous fournisse une API XPATH.

Un exemple simple en python (inspiré de ce SO question) pourrait par :

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()

Puisque vous venez d'ajouter PHP à la question, aquí est un LIEN sur la façon d'utiliser XPATH en PHP.

2voto

Chris Points 521

J'utilise Linq to XML. Cependant, le fait que vous n'ayez pas indiqué votre plate-forme de développement rend impossible toute réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X