Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung der Verwendung der XML-Dokumentsuche

Zusammenfassung der Verwendung der XML-Dokumentsuche

黄舟
黄舟Original
2017-03-03 17:06:201840Durchsuche

Wenn Sie XML-Dokumente in .NET verarbeiten, müssen Sie häufig die Daten eines bestimmten Knotens im Dokument finden. Es gibt viele Möglichkeiten, einen bestimmten Knoten zu finden. Hier fasse ich einige häufig verwendete Methoden für Sie zusammen.

Zuerst müssen wir ein XML-Dokument in ein XmlDocument-Objekt laden.

Zitieren Sie zunächst einige Namespaces:

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


Sie werden die Bedeutung dieser Namespaces anhand ihrer Namen kennen, aber ich werde nicht hier sein . Zu viel zu sagen. Dann gibt es den Code zum Laden der XML-Datei wie folgt:


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



Auf diese Weise haben wir ein XML-Dokument namens myDoc. Suchen wir nun nach einigen Knoten in diesem Dokument. Schauen wir uns zunächst den Inhalt dieser XML-Datei an.

<?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>


Wir können nun die folgende Methode verwenden, um den Knoten mit dem Namen tim zu finden:
myDoc.ChildNodes.Item(1).ChildNodes.Item(0) .FirstChild.InnerText

Bei dieser Methode müssen wir Schicht für Schicht nach innen suchen, um die Daten zu finden, die wir benötigen. Wenn es viele Schichten gibt, ist dies sehr mühsam und fehleranfällig. Glücklicherweise stellt uns .NET die Methoden SelectSingleNode und SelectNodes als weitere Methoden zur Verfügung, mit denen wir die gewünschten Daten direkt finden können. Wenn wir beispielsweise das Hobby des Benutzers namens „Tim“ finden möchten, können wir die folgende Methode verwenden:
myDoc.SelectSingleNode ("//member[name='Tim']").ChildNodes.Item( 1). InnerText

Wobei // den untergeordneten Knoten einer beliebigen Ebene darin darstellt. So können wir schnell finden, was wir suchen. SelectSingleNode findet einen einzelnen Knoten und SelectNodes kann viele Knoten finden.

Jeder weiß, wie man einen untergeordneten Knoten in XML findet. Jetzt suchen wir nach einem untergeordneten Knoten in einer speziellen XML-Datei---XSL-Datei.

Angenommen, ich habe jetzt eine XSL-Datei wie diese:

 <?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>


Wir haben zwei Variablen in asp.net und wir benötigen die XSL-Datei dazu be in Diese beiden Variablen werden bei der Transformation von XML-Dateien verwendet. Wie machen wir das?

Die Methode, die ich gewählt habe, besteht darin, zunächst die XSL-Datei als XML-Dokument zu laden. Bevor wir sie verwenden, suchen wir den Knoten, der geändert werden muss, und ändern ihn mit unseren Variablen. Zu diesem Zeitpunkt müssen wir bei der Suche nach diesem Knoten einige Änderungen vornehmen. Der Code lautet wie folgt:

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 = 你所需要输给的变量


Mit anderen Worten, für etwas wie 8c9feb8ec60a38ae6c93dad5aa711d9574840d2e8628076055d931bf84be95ea Definieren Sie einen XmlNamespaceManager und verwenden Sie ihn, um den benötigten Knoten zu finden.

Das Obige ist die Zusammenfassung der Verwendung der XML-Dokumentsuche. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn