Maison >développement back-end >Tutoriel XML/RSS >Une compréhension préliminaire de l'espace de noms dans l'analyse XML

Une compréhension préliminaire de l'espace de noms dans l'analyse XML

黄舟
黄舟original
2017-03-17 17:32:531969parcourir

Le problème le plus courant que les débutants peuvent rencontrer lors de l'analyse de fichiers XML est probablement l'espace de noms XML. Cet article vise à donner une brève introduction à l'espace de noms. Inutile de dire que la signification de

espace de noms est la même que celle de C, C# et d'autres langages de haut niveau. XML est également confronté au problème des noms de variables en double lorsqu'un grand nombre de fichiers. sont rassemblés, donc l'espace de noms doit être utilisé pour changer le nom. Les variables ayant la même signification mais des significations différentes sont isolées. Cet article se concentre sur la méthode d'analyse de l'espace de noms.

Ce qui suit est un simple fichier XML :

<root>
   <child id = ‘0’> 
      hello world 
   </child>
   <child id=&#39;1&#39;>
     one
   </child>
</root>

Il n'y a pas d'espace de noms dans cet exemple. Je crains que les exemples que vous rencontrez lorsque vous apprenez pour la première fois. XML est comme ça. Cet exemple est trompeur. Après avoir analysé hello world, les débutants utilisent volontiers le même programme pour analyser de vrais fichiers XML et échouent souvent. Ce qui suit est un fichier XML renvoyé par DoubanAPI

<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" 
xmlns:gd="http://schemas.google.com/g/2005" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">  
<id>http://api.douban.com/event/10069638</id>  
<title>Debugging the Web </title>  
<category scheme="http://www.douban.com/2007#kind" term="http://www.douban.com/2007#event.salon"/>  
<author>    
<link href="http://api.douban.com/people/1057620" rel="self"/>    
<link href="http://www.douban.com/people/aka/" rel="alternate"/>    
<link href="http://t.douban.com/icon/u1057620-16.jpg" rel="icon"/>
    name>胖胖的大头鱼</name>    
    <uri>http://api.douban.com/people/1057620</uri>
    </author>
<db:attribute name="invite_only">no</db:attribute>

Quand vous voyez autant de www, vous ne voulez pas le lire et l'ignorez simplement , puis vous voyez le familier 347a9bb76698637295de97abbc9459f6, j'applique de manière décisive le programme dans l'exemple ci-dessus, mais je n'obtiens rien lorsque je l'exécute. Quel est le problème ? C# fournit de nombreuses classes XML, XDocument, . Chaussures enfants, on se calme et on regarde ligne par ligne. 52b189f45abba88b2989c5c1f30b7a34Cette ligne n'est pas intéressante, regardez iciac89ff09cf903635e6301889a3ad7d63noea6f540cddccdca7d953c18eb1eb3288, peut être compris Oui, db est l'abréviation d'un espace de noms, ce qui est pratique pour écrire devant le nom de l'élément, de sorte que 5a37d16f53356ad61c30ba4c13522081 soit différent de e8aa4f7ce323535a9b01247c46fe6139, 02d8a117819869c76bcd3e50c8e21798. Cette abréviation permet de distinguer les variables dans un document, mais elle ne convient toujours pas à un grand nombre de documents, donc l'espace de noms a également un nom complet, qui est http://www.douban.com/xmlns/ ici. En fait, vous pouvez écrire n'importe quel contenu pour ce nom complet. Pour XML Parser, il est traité comme une

chaîne

. Cependant, il est difficile de penser à un nom. Deuxièmement, il peut être utilisé comme une publicité. , donc tout le monde l'utilise généralement. Lors de l'analyse, Parser distingue les variables en fonction de leurs noms complets, donc même s'il y a 5a37d16f53356ad61c30ba4c13522081 dans les deux documents, tant que les noms complets sont différents, il n'y aura aucun problème. Cela rend les choses plus claires, mais qu'est-ce que http://www.w3.org/2005/Atom exactement ? Il n'a même pas d'abréviation ? Hé, tu as raison quand tu réalises ça. Son abréviation est "", chaîne vide. Cette chose est appelée l'espace de noms par défaut, et ceux qui semblent n'avoir aucun préfixe se trouvent sous cet espace de noms. Ainsi, l'ae57f42b56b3d12afcbbdeb0cad5cae3 n'est pas nu, il s'agit en fait de 3d535442830992583573ef76ba499fce, donc bien sûr, le programme nu ne peut pas l'analyser.

Alors, comment l'analyser ? Voici un exemple de programme, j'espère qu'il sera utile à tout le monde. Ce code fonctionne sur WP7. J'ai aussi une version de XmlDocument, mais WP7 n'a pas cette classe, c'est décevant. . .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn