誰もが .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='src']", nsmanager).InnerXml = 你所需要输给的变量
つまり、
上記は XML ドキュメント検索の使用法をまとめたものです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。