Maison  >  Article  >  développement back-end  >  Introduction détaillée à l'analyse DOM dans l'analyse XML

Introduction détaillée à l'analyse DOM dans l'analyse XML

王林
王林avant
2019-08-26 17:30:326277parcourir

1. Concept

Les fichiers XML sont principalement utilisés pour décrire des informations, donc après avoir obtenu un document XML, extraire les informations correspondantes en fonction des éléments du XML est une analyse XML. Il existe deux façons d'analyser XML, l'une est l'analyse DOM et l'autre est l'analyse SAX. Les deux méthodes de fonctionnement sont comme indiqué dans la figure.

Introduction détaillée à lanalyse DOM dans lanalyse XML

2. Analyse DOM

L'analyseur XML basé sur l'analyse DOM le convertit en une collection de modèles d'objet, à l'aide d'un arbre. est une structure de données qui stocke des informations. Grâce à l'interface DOM, l'application peut accéder à n'importe quelle partie des données du document XML à tout moment. Cette méthode d'utilisation de l'interface DOM pour y accéder est également appelée accès aléatoire.

Cette méthode présente également des défauts, car l'analyseur DOM convertit l'intégralité du fichier XML en une arborescence et le stocke en mémoire. Lorsque la structure du fichier est volumineuse ou que les données sont complexes, cette méthode a des besoins en mémoire plus élevés. et parcourir un arbre avec une structure complexe est également une opération très chronophage. Cependant, la structure arborescente utilisée par DOM est cohérente avec la façon dont XML stocke les informations, et son accès aléatoire peut également être utilisé, de sorte que l'interface DOM a toujours une grande valeur d'utilisation.

Nous donnons ici un exemple pour illustrer la structure des données de conversion de XML en arbre.

<?xml version="1.0" encoding="GBK"?>
<address>
	<linkman>
		<name>Van_DarkHolme</name>
		<email>van_darkholme@163.com</email>
	</linkman>
	<linkman>
		<name>Bili</name>
		<email>Bili@163.com</email>
	</linkman>
</address>

La structure de conversion du XML en arbre est :

Introduction détaillée à lanalyse DOM dans lanalyse XML

Il existe les 4 interfaces d'opération de base suivantes dans l'analyse DOM

Document : Cette interface représente l'intégralité du document XML et est représentée comme la racine de l'ensemble du DOM, qui est l'entrée de l'arborescence. Grâce à cette interface, le contenu de tous les éléments du XML est accessible. Les méthodes courantes sont les suivantes.

(Remarque : bien que cela ne soit pas illustré dans la figure ci-dessus, les attributs de nom et d'adresse e-mail constituent également respectivement un nœud)

Méthodes courantes de document

Introduction détaillée à lanalyse DOM dans lanalyse XML

Node : Cette interface joue un rôle important dans l'ensemble de l'arborescence DOM. Les interfaces principales des opérations DOM sont héritées de Node (Document, Element, Attr). Dans l'arborescence DOM, chaque interface Node représente un nœud de l'arborescence DOM

Méthodes courantes de l'interface Node

Introduction détaillée à lanalyse DOM dans lanalyse XML

NodeList : Cette interface représente généralement une collection de points. utilisé pour un ensemble de nœuds dans une relation ordonnée.

Méthodes courantes NodeList

Introduction détaillée à lanalyse DOM dans lanalyse XML

NamedNodeMap : Cette interface représente la relation un-à-un entre un groupe de nœuds et leurs noms uniques, et est principalement utilisée pour représenter les attributs des nœuds

En plus des quatre interfaces principales ci-dessus, si un programme doit effectuer des opérations d'analyse DOM, il doit suivre les étapes suivantes :

1. Établissez un DocumentBuilderFactor pour obtenir. l'objet DocumentBuilder :

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

2. Créer DocumentBuidler :

DocumentBuilder builder = factory.newDocumentBuilder();

3. Créez un objet Document et obtenez l'entrée de l'arborescence :

Document doc = builder.parse("chemin relatif ou chemin absolu du fichier XML");

4.

NodeList n1 = doc .getElementByTagName("Read node");

5. Acquérir des informations XML

public class DOMDemo01 {
	
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException{
		//建立DocumentBuilderFactor,用于获得DocumentBuilder对象:
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//2.建立DocumentBuidler:
		DocumentBuilder builder = factory.newDocumentBuilder();
		//3.建立Document对象,获取树的入口:
		Document doc = builder.parse("src//dom_demo_02.xml");
		//4.建立NodeList:
		NodeList node = doc.getElementsByTagName("linkman");
		//5.进行xml信息获取
		for(int i=0;i<node.getLength();i++){
			Element e = (Element)node.item(i);
			System.out.println("姓名:"+
					e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
			System.out.println("邮箱:"+
					e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
		}	
		
	}
}

Introduction détaillée à lanalyse DOM dans lanalyse XML

Le code ci-dessus sera être analysé à partir du quatrième point :

Grâce à doc.getElementByTagName("linkman"), nous obtenons une NodeList Le fichier XML ci-dessus contient deux nœuds Linkman, donc la NodeList contient ici deux nœuds (les deux nœuds Linkman), et puis via la méthode de la boucle pour obtenir les informations dans le fichier XML.

Element e = (Element)node.item(i) obtient le nœud linkman, c'est-à-dire que e pointe vers linkman

e.getElementTagName("name").item(0). getFirstChild ().getNodeValue();

getElementTagName("name"); Obtenu tous les nœuds de nom sous le linkman (en fait seulement 1

Item(0); (un seul);

getFristChild(); Récupère le nœud de texte sous le nœud de nom, qui est le nœud où se trouve le contenu (comme mentionné ci-dessus, le contenu du texte est également un nœud distinct, createTextNode() dans la liste des méthodes Document doit créer le nœud de texte);

getNodeValue() obtient la valeur du nœud de texte : van_darkholme ;

Pour plus de questions connexes, veuillez visiter le site Web PHP chinois : Tutoriel vidéo XML

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer