Maison >développement back-end >Tutoriel XML/RSS >Introduction détaillée à l'analyse DOM dans l'analyse XML
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.
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 :
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
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
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
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()); } } }
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!