工作中需要解析到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;
}
}
}