Maison > Article > développement back-end > Questions fréquemment posées sur la prise en main de XML (4)
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
Le résultat est un arbre semblable au suivant :
ÉLÉMENT : personne
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.
Le résultat est l'arborescence claire suivante :
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.
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
lephantcar 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.
Le type d'espace de noms doit être #FIXED. Il en va de même pour les espaces de noms d'attributs :
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
Jane Smith
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 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 root2 = doc.getDocumentElement();
if (root1 == root2). .
Utilisez plutôt le code suivant :
IXMLDocument*, XMLDocument*
*,IXMLElementCollection*,
tagXMLEMEM_TYPE* _xml_error*
Cela réduit la taille à 147 Ko. Vous pouvez également supprimer les éléments suivants :
DOMFreeThreadedDocument
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
IXMLDOMDocumentFragment*
IXMLDOMImplémentationIXMLDOMParseError
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
IXMLDOMProcessingInstruction
IXMLDOMEntityReference
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(...)