Maison  >  Article  >  développement back-end  >  Questions fréquemment posées sur la prise en main de XML (4)

Questions fréquemment posées sur la prise en main de XML (4)

黄舟
黄舟original
2016-12-22 17:39:441891parcourir

Comment gérer les caractères d'espacement dans le modèle objet XML ?

Parfois, le modèle objet XML affichera les nœuds TEXTE contenant des caractères d'espacement. Lorsque les caractères d'espacement sont tronqués, cela risque de créer une certaine confusion. Par exemple, l'exemple XML suivant :


]>
Smith
John

génère l'arborescence suivante :


PInstruction de traitement : xml
ELEMENT : personne
TEXTE : nom
TEXTE : prénom
TEXTE :


Le prénom et le nom sont entourés de nœuds TEXTE contenant uniquement des espaces caractères car le modèle de contenu de l'élément « personne » est MIXED ; il contient le mot-clé #PCDATA. Le modèle de contenu MIXED spécifie que du texte peut exister entre les éléments. Par conséquent, ce qui suit est également correct :


Mon nom de famille est Smith et mon prénom est

John



Le résultat est un arbre semblable au suivant :


ÉLÉMENT : personne

TEXTE : Mon nom de famille est

TEXTE : et mon prénom est
ÉLÉMENT : prénom
TEXTE :


Sans les caractères d'espacement après et avant le mot « est », et les caractères d'espacement après et avant le mot « et », la phrase serait inintelligible. Par conséquent, pour le modèle de contenu MIXED, les combinaisons de texte, les caractères d’espacement et les éléments sont tous pertinents. Ce n’est pas le cas pour les modèles de contenu non MIXTE.

Pour faire disparaître le nœud TEXT contenant uniquement des espaces, supprimez le mot-clé #PCDATA de la déclaration de l'élément "person" :


Le résultat est l'arborescence claire suivante :

Instruction de traitement : xml

DocType : personne

ELEMENT : personne

ELEMENT : nom
ELEMENT : prénom

A quoi sert la déclaration XML ?

La déclaration XML doit être listée en haut du document XML :

Elle précise les éléments suivants :

Le document est un document XML. Les détecteurs MIME peuvent l'utiliser pour détecter si un fichier est de type text/xml lorsque le type MIME est manquant ou n'a pas été spécifié.

 Le document est conforme à la spécification XML 1.0. Cela sera important à l'avenir s'il existe d'autres versions de XML.

Encodage des caractères du document. L'attribut d'encodage est facultatif et la valeur par défaut est UTF-8.

REMARQUE : La déclaration XML doit être sur la première ligne du document XML, donc le fichier XML suivant :


produit l'erreur d'analyse suivante :

Déclaration XML non valide.

Ligne 0000002 :

Emplacement 0000007 : ------^

Remarque : La déclaration XML est facultative. Si vous devez spécifier des commentaires ou des instructions de traitement en haut, ne mettez pas de déclaration XML. Cependant, l'encodage par défaut sera UTF-8.


Comment imprimer mon document XML dans un format lisible ?

Lors de la construction d'un document à partir de zéro en utilisant le DOM pour produire un fichier XML, tout est sur une seule ligne sans espaces entre eux. Il s'agit du comportement par défaut.

Construit la feuille de style XSL par défaut dans Internet Explorer 5 pour afficher et imprimer les documents XML dans un format lisible. Par exemple, si IE5 est installé, essayez de consulter le fichier nospace.xml. Le navigateur doit afficher l'arborescence suivante :

-

-

Imprimer du XML lisible est très intéressant, surtout lorsqu'il existe des DTD qui définissent différents types de modèles de contenu. Par exemple, dans le modèle de contenu mixte (#PCDATA), vous ne pouvez pas insérer d'espaces car cela pourrait modifier la signification du contenu. Par exemple, considérons le XML suivant :

Elephant
Il serait préférable de ne pas afficher comme :

E

lephant

car les limites des mots ne sont plus correctes.

Tout cela rend l’impression automatisée problématique. Si vous n'avez pas besoin d'imprimer du XML lisible, vous pouvez utiliser le DOM pour insérer des caractères d'espacement en tant que nœuds de texte aux emplacements appropriés.

 Comment utiliser les espaces de noms en DTD ? Pour utiliser un espace de noms dans une DTD, déclarez-le dans la déclaration ATTLIST de l'élément qui l'utilise, comme ceci :


Le type d'espace de noms doit être #FIXED. Il en va de même pour les espaces de noms d'attributs :

Espaces de noms et schémas XML

Les schémas DTD et XML ne peuvent pas être mélangés. Par exemple, le xmlns:x CDATA #FIXED "x-schema:myschema.xml" suivant. L'utilisation des schémas DTD et XML s'excluent mutuellement.

 Comment utiliser XMLDSO en Visual Basic ?

Utilisez le XML suivant comme exemple :


Mark Hanson

206 765 4583


Jane Smith

425 808 1111


Vous pouvez vous lier à un jeu d'enregistrements ADO comme suit :

Créez un nouveau projet VB 6.0.

Ajoutez des références à Microsoft ActiveX Data Objects 2.1 ou version ultérieure, à la bibliothèque Microsoft Data Adapter et à Microsoft XML version 2.0.


Utilisez le code suivant pour charger des données XML dans le contrôle XML DSO :


Dim dso As New XMLDSOControl
Dim doc As IXMLDOMDocument
Set doc = dso.XMLDocument
doc.Load ("d:test.xml")

Utilisez le suivant Le code mappe le DSO dans un nouvel objet recordset à l'aide d'un DataAdapter : > Set rs.DataSource = da


Accédez aux données :


MsgBox rs.Fields("name ").Value

Le résultat affiche la chaîne " Mark Hanson"
 Comment utiliser XML DOM en java ?

 La version IE5 de MSXML.DLL doit être installée. Dans Visual J 6.0, sélectionnez Ajouter COM Wrapper dans le menu Projet, puis sélectionnez « Microsoft XML 1.0 » dans la liste des objets COM. Cela construira le wrapper Java requis dans un nouveau package appelé "msxml". Ces wrappers Java prédéfinis sont également disponibles en téléchargement. Les classes peuvent être utilisées comme suit :

import com.ms.com.*;
import msxml.*;

public class Class1

{

public static void main (String[] args)

 {
 DOMDocument doc = new DOMDocument();
 doc.load(new Variant("file://d:/samples/ot.xml"));
System.out.println("Loaded " doc.getDocumentElement().getNodeName());
 }
 }



L'exemple de code sera chargé depuis le soleil exemple de religion, fichier de test de 3,8 Mo "ot.xml". La classe Variant encapsule le type de base Win32 VARIANT.

Vous ne pouvez pas utiliser de comparaisons de pointeurs sur les nœuds car vous obtenez en fait un nouveau wrapper à chaque fois que vous récupérez le nœud. Par conséquent, n'utilisez pas le code suivant,

IXMLDOMNode root1 = doc.getDocumentElement();

IXMLDOMNode root2 = doc.getDocumentElement();

if (root1 == root2). .


Utilisez plutôt le code suivant :

if (ComLib.isEqualUnknown(root1, root2)) ....

La taille totale du wrapper .class est d'environ 160 Ko. Cependant, pour une conformité totale avec la spécification W3C, seuls les wrappers IXMLDOM* doivent être utilisés. Les classes suivantes sont d'anciennes interfaces XML IE 4.0, vous pouvez les supprimer du dossier msxml :


IXMLAttribute*,

IXMLDocument*, XMLDocument*

*,

IXMLElementCollection*,

tagXMLEMEM_TYPE* ​​​​

_xml_error*



Cela réduit la taille à 147 Ko. Vous pouvez également supprimer les éléments suivants :


DOMFreeThreadedDocument

Accédez aux documents XML à partir de plusieurs threads dans les applications Java.

xmlhttpRequest

Utilisez l'extension HTTP XML DAV pour communiquer avec le serveur.

 IXTLRuntime

 Définissez l'objet script de feuille de style XSL.

XMLDSOControl
Se lie aux données XML de la page HTML.
 XMLDOMDocumentEvents
 Renvoie des rappels pendant le processus d'analyse.



Cela réduit la taille à 116 Ko. Pour le rendre encore plus petit, considérez le fait que le DOM lui-même comporte deux couches : la couche centrale se compose de :


DOMDocument, IXMLDOMDocument

IXMLDOMNode*

IXMLDOMDocumentFragment*

IXMLDOMImplémentation

IXMLDOMParseError


Et les informations DTD que les utilisateurs peuvent avoir besoin de conserver :


🎜> IXMLDOMNotation


Tous les types de nœuds dans un XML document sont des IXMLDOMNodes, qui fournissent toutes les fonctionnalités, mais il existe des wrappers de niveau supérieur pour chaque type de nœud. Par conséquent, si vous modifiez le wrapper DOMDocument et changez ces types spécifiques pour utiliser IXMLDOMNode, alors toutes les interfaces suivantes peuvent être supprimées : IXMLDOMAttribute

> IXMLDOMElement

IXMLDOMProcessingInstruction
IXMLDOMEntityReference

IXMLDOMText



Les supprimer réduira la taille à 61 Ko. Cependant, pour IXMLDOMElement, les méthodes getAttribute et setAttribute sont utiles. Sinon, vous devez utiliser :

IXMLDOMNode.getAttributes().setNamedItem(...)

Ce qui précède est le contenu de la FAQ (4) pour démarrer avec XML . Veuillez prêter attention au contenu plus pertinent du site Web chinois PHP (www.php.cn) !





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