Maison  >  Article  >  développement back-end  >  Résumé de l'utilisation de la recherche de documents XML

Résumé de l'utilisation de la recherche de documents XML

黄舟
黄舟original
2017-03-03 17:06:201907parcourir

Lorsque vous traitez des documents XML dans .NET, vous devez souvent trouver les données d'un certain nœud dans le document. Il existe de nombreuses façons de trouver un certain nœud. Je vais résumer ici quelques méthodes couramment utilisées pour vous.

Tout d'abord, ce que nous devons faire est de charger un document XML dans un objet XmlDocument.

Citez d'abord quelques espaces de noms :

  using System.Xml; 
  using System.Xml.Xsl; 
  using System.Xml.XPath;


Vous connaîtrez la signification de ces espaces de noms en fonction de leurs noms, mais je ne serai pas là . Trop de choses à dire. Ensuite, il y a le code pour charger le fichier XML, comme suit :


String xmlfile="c:/member.xml"; //其中的xmlfile是你要载入的XML文件的路径。 
  XmlDocument myDoc = new XmlDocument(); //定义一个XmlDocument对象。 
  myDoc.Load(xmlfile);



De cette façon, nous avons un document XML appelé myDoc. Cherchons maintenant quelques nœuds dans ce document. Examinons d'abord le contenu de ce fichier XML.

<?xml version="1.0" encoding="UTF-8"?> 
  <members> 
   <member> 
   <name>Tim</name> 
   <hobby>reading</hobby> 
   <homepage>www.aspcool.com</homepage> 
   </member> 
   <member> 
   <name>Sandy</name> 
   <hobby>learning</hobby> 
   </member> 
   <member> 
   <name>Shally</name> 
   <hobby>tranlating</hobby> 
   </member> 
   <member> 
   <name>Christine</name> 
   <hobby>working</hobby> 
   </member> 
  </members>


Nous pouvons maintenant utiliser la méthode suivante pour trouver le nœud nommé tim :
myDoc.ChildNodes.Item(1).ChildNodes.Item(0) .FirstChild.InnerText

Cette méthode nous oblige à rechercher couche par couche les données dont nous avons besoin. S'il y a plusieurs couches, cela sera très laborieux et sujet aux erreurs. Heureusement, .NET nous fournit une autre méthode, les méthodes SelectSingleNode et SelectNodes qui nous permettent de trouver directement les données souhaitées. Par exemple, si nous voulons trouver le hobby de l'utilisateur nommé "Tim", nous pouvons utiliser la méthode suivante :
myDoc.SelectSingleNode ("//member[name='Tim']").ChildNodes.Item( 1). InnerText

Où // représente le nœud enfant de n'importe quelle couche à l'intérieur. De cette façon, nous pouvons trouver rapidement ce que nous cherchons. SelectSingleNode trouve un seul nœud et SelectNodes peut trouver plusieurs nœuds.

Tout le monde sait comment trouver un nœud enfant en XML. Nous recherchons maintenant un nœud enfant dans un fichier XML spécial --- Fichier XSL.

Supposons que j'ai maintenant un fichier XSL comme celui-ci :

 <?xml version="1.0" encoding="gb2312"?> 
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
   <xsl:PReserve-space elements="codes"/> 
   <xsl:template match="/"> 
   <xsl:apply-templates/> 
   </xsl:template> 
   
   <xsl:template match="image"> 
   <table align="{@location}"> 
   <tr> 
   <td> 
   <img align="{@location}" alt="{text()}"> 
   <xsl:attribute name="src">../FTP_Magazine/FTP_Issue/<xsl:value-of select="@url"/></xsl:attribute> 
   </img> 
   </td> 
   </tr> 
   <tr> 
   <td> 
   <center> 
   <xsl:apply-templates/> 
   </center> 
   </td> 
   </tr> 
   </table> 
   </xsl:template> 
     </xsl:stylesheet>


Nous avons deux variables dans asp.net et nous avons besoin du fichier XSL pour be in Ces deux variables sont utilisées lors de la transformation de fichiers XML. Comment faisons-nous cela ?

La méthode que j'ai utilisée consiste à charger d'abord le fichier XSL en tant que document XML. Avant de l'utiliser, nous trouvons le nœud qui doit être modifié et le modifions avec nos variables. Pour le moment, nous devons apporter quelques modifications lors de la recherche de ce nœud. Le code est le suivant :

XmlNamespaceManager nsmanager = new XmlNamespaceManager(xslDoc.NameTable); 
  nsmanager.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform"); 
  xslDoc.SelectSingleNode("//xsl:attribute[@name=&#39;src&#39;]", nsmanager).InnerXml = 你所需要输给的变量


En d'autres termes, pour quelque chose comme d03abc26df29358d7b9592a587fc8f5374840d2e8628076055d931bf84be95ea définissez un XmlNamespaceManager et utilisez-le pour trouver le nœud dont nous avons besoin.

Ce qui précède est le résumé de l'utilisation de la recherche de documents XML. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (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