根据XPath找到某一个特定的节点

 

工作中需要解析到XML文件,发现XPath很神奇。如果能灵活设置XPath,找到某个特定的节点就可以轻而易举了。

下面的链接大家可以参考一下,主要就是介绍XPath的。

来自MSDN的介绍:http://msdn.microsoft.com/en-us/library/ms256086.aspx

便于大家理解,还可以看看下边的两个链接:

http://www.zvon.org/xxl/XPathTutorial/Output/examples.html

http://www.w3schools.com/xpath/xpath_syntax.asp

下面的代码是以后需要继续维护的XmlHelper类,先放到这里。

代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace XmlHelper
{
class XmlHelper
{
public static void CreateXML(string xml,string fileName)
{
XmlDocument xmlDoc
= new XmlDocument();
xmlDoc.LoadXml(xml);
xmlDoc.Save(fileName);
}

public static void CreateXML(string fileName, string node, string version, string encoding, string standalone)
{
XmlDocument xmlDoc
= new XmlDocument();
XmlDeclaration xmlDeclaration
= xmlDoc.CreateXmlDeclaration(version, encoding, standalone);
xmlDoc.AppendChild(xmlDeclaration);

XmlNode root
= xmlDoc.CreateElement(node);
xmlDoc.AppendChild(root);

xmlDoc.Save(fileName);
}

public static void CreateXML(string fileName,XmlNode node,string version, string encoding, string standalone )
{
XmlDocument xmlDoc
= new XmlDocument();
XmlDeclaration xmlDeclaration
= xmlDoc.CreateXmlDeclaration(version, encoding, standalone);
xmlDoc.AppendChild(xmlDeclaration);
xmlDoc.AppendChild(node);
xmlDoc.Save(fileName);
}

/// <summary>
/// Find xml by xpath according to subelement value
/// </summary>
/// <param name="xml"></param>
/// <param name="xPath">/students/student/name["may"]</param>
/// <returns></returns>
public static string FindNodeXmlByXPathWithSubElementValue(string fileName, string xPath)
{
string outerXml = string.Empty;
XmlDocument xmlDoc
= new XmlDocument();
xmlDoc.Load(fileName);
XmlNode node
= xmlDoc.SelectSingleNode(xPath);
outerXml
= node.OuterXml;
return outerXml;
}

/// <summary>
/// Find specified node by xpath according to subelement value
/// </summary>
/// <param name="xml"></param>
/// <param name="xPath">/students/student/name["may"]</param>
/// <returns></returns>
public static XmlNode FindNodeByXPathWithSubElementValue(string fileName, string xPath)
{
XmlDocument xmlDoc
= new XmlDocument();
xmlDoc.Load(fileName);
XmlNode node
= xmlDoc.SelectSingleNode(xPath);
return node;

}
}
}

 

 

 

 

posted on 2010-06-04 17:38  -Anny-  阅读(735)  评论(0编辑  收藏  举报