>  기사  >  백엔드 개발  >  XML 문서 검색 사용 요약

XML 문서 검색 사용 요약

黄舟
黄舟원래의
2017-03-03 17:06:201887검색

.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=&#39;src&#39;]", nsmanager).InnerXml = 你所需要输给的变量


즉, b2c5701d1a22d469af1fa363bb8700e1../FTP_Magazine/FTP_Issue/0b4405061552d20d6a74f9c944f8d93b74840d2e8628076055d931bf84be95ea 검색하기 전에 XmlNamespaceManager를 정의해야 합니다. 필요한 노드를 찾을 수 있습니다.

위 내용은 XML 문서 검색 요약입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.