.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에는 두 개의 변수가 있고 Transform XML에는 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 = 你所需要输给的变量
즉, b2c5701d1a22d469af1fa363bb8700e1../FTP_Magazine/FTP_Issue/0b4405061552d20d6a74f9c944f8d93b74840d2e8628076055d931bf84be95ea 검색하기 전에 XmlNamespaceManager를 정의해야 합니다. 필요한 노드를 찾을 수 있습니다.
위 내용은 XML 문서 검색 요약입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!