ホームページ  >  記事  >  バックエンド開発  >  XML ドキュメント検索の使用の概要

XML ドキュメント検索の使用の概要

黄舟
黄舟オリジナル
2017-03-03 17:06:201840ブラウズ

誰もが .NET で XML ドキュメントを処理するとき、多くの場合、ドキュメント内の特定のノードのデータを検索する必要があります。特定のノードを見つけるにはさまざまな方法があります。ここでは、一般的に使用されるいくつかの方法をまとめます。

まず、XML ドキュメントを XmlDocument オブジェクトにロードする必要があります。

まず、いくつかの名前空間を引用しましょう:

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


これらの名前空間の意味は、その名前に基づいてすでにご存知なので、ここではこれ以上は述べません。次に、次のような XML ファイルをロードするコードがあります:


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



このようにして、myDoc という XML ドキュメントが作成されます。この文書内のいくつかのノードを探してみましょう。まず、この 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>


これで、次のメソッドを使用して tim という名前のノードを見つけることができます:
myDoc.ChildNodes.Item(1).ChildNodes.Item(0).FirstChild.InnerText

このメソッドでは、次のようにレイヤーを移動する必要があります。レイヤー 必要なデータを見つけるのに多くのレベルがある場合、非常に手間がかかり、エラーが発生しやすくなります。幸いなことに、.NET には、必要なデータを直接検索できる別のメソッド SelectSingleNode メソッドと SelectNodes メソッドが用意されています。たとえば、「Tim」という名前のユーザーの趣味を見つけたい場合は、次のメソッドを使用できます:
myDoc.SelectSingleNode ("//member[name='Tim']").ChildNodes.Item(1) .InnerText

ここで、 // は内部の任意のレイヤーの子ノードを表します。こうすることで、探しているものをすぐに見つけることができます。 SelectSingleNode は単一のノードを検索し、SelectNodes は多数のノードを検索できます。

XML で子ノードを見つける方法は誰もが知っています。次に、特別な XML ファイル、つまり XSL ファイルで子ノードを探します。

次のような XSL ファイルがあるとします。

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


asp.net には 2 つの変数があり、XML ファイルを変換するときにこれら 2 つの変数を使用するには XSL ファイルが必要です。どうやってこれを行うのでしょうか?

私がとった方法は、まず XSL ファイルを XML ドキュメントとしてロードし、それを使用する前に、変更する必要があるノードを見つけて、変数を使用して変更します。現時点では、このノードを検索するときにいくつかの変更を加える必要があります。コードは次のとおりです。

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


つまり、c6790cd964aa3a1ac5ae76cecbdc246d のようなものに対してです。 /FTP_Magazine/FTP_Issue/70a0fb9e50bfdd20c0aeb4ab41dda3c874840d2e8628076055d931bf84be95ea のようなノードを検索する前に、XmlNamespaceManager を定義する必要があります。これを使用してノードを見つけることができます。必要。

上記は XML ドキュメント検索の使用法をまとめたものです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。