xml文件编程中经常用到,它的结构化存储数据可与数据库结合使用,也用于显示视图 。
XmlHelper.cs
using
System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.Serialization;
using System.IO;
using System.Net;
using System.Data;
namespace Beasyer.Lib
... {
public static class XmlHelper
...{
/**//// <summary>
/// 由路径获取xml对象
/// </summary>
/// <param name="contentUrl"></param>
/// <returns></returns>
public static XmlDocument GetXMLContent(string contentUrl)
...{
XmlDocument returnValue;
returnValue = new XmlDocument();
WebRequest webRequest = WebRequest.Create(contentUrl);
WebResponse webResponse = webRequest.GetResponse();
XmlReader xmlReader = new XmlTextReader(webResponse.GetResponseStream());
returnValue.Load(xmlReader);
return returnValue;
}
/**//// <summary>
/// 由路径获取xsl对象
/// </summary>
/// <param name="contentURL"></param>
/// <returns></returns>
public static XslCompiledTransform GetXSLContent(string contentURL)
...{
XslCompiledTransform returnValue;
returnValue = new XslCompiledTransform();
WebRequest webRequest = WebRequest.Create(contentURL);
WebResponse webResponse = webRequest.GetResponse();
XmlReader xslTransform = new XmlTextReader(webResponse.GetResponseStream());
returnValue.Load(xslTransform, null, null);
return returnValue;
}
/**//// <summary>
/// 新建xmlattribute属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="attributeName"></param>
/// <param name="attributeValue"></param>
/// <returns></returns>
public static XmlAttribute CreateAttribute(XmlDocument objXmlDoc, string attributeName, string attributeValue)
...{
XmlAttribute attribute = objXmlDoc.CreateAttribute(attributeName);
attribute.Value = attributeValue;
return attribute;
}
/**//// <summary>
/// 新建xmlelement属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="nodeName"></param>
/// <param name="nodeValue"></param>
/// <returns></returns>
public static XmlElement CreateElement(XmlDocument objXmlDoc, string nodeName, string nodeValue)
...{
XmlElement element = objXmlDoc.CreateElement(nodeName);
element.InnerText = nodeValue;
return element;
}
/**//// <summary>
/// 查找数据。返回一个DataSet
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="XmlPathNode"></param>
/// <returns>DataSet</returns>
public static DataSet GetDataFromNode(XmlDocument objXmlDoc, string XmlPathNode)
...{
DataSet ds = new DataSet();
StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
return ds;
}
/**//// <summary>
/// 更新节点內容
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="XmlPathNode"></param>
/// <param name="Content"></param>
public static void UpdateNode(ref XmlDocument objXmlDoc, string XmlPathNode, string Content)
...{
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
}
/**//// <summary>
/// 刪除一个节点
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="Node"></param>
public static void DeleteNode(ref XmlDocument objXmlDoc, string Node)
...{
string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
}
/**//// <summary>
/// 插入一节点和此节点的一子节点
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="MainNode"></param>
/// <param name="ChildNode"></param>
/// <param name="Element"></param>
/// <param name="Content"></param>
public static void InsertNode(ref XmlDocument objXmlDoc, string MainNode, string ChildNode, string Element, string Content)
...{
XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objChildNode.AppendChild(objElement);
}
/**//// <summary>
/// 插入一个节点,带一属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="MainNode"></param>
/// <param name="Element"></param>
/// <param name="Attrib"></param>
/// <param name="AttribContent"></param>
/// <param name="Content"></param>
public static void InsertElement(ref XmlDocument objXmlDoc, string MainNode, string Element, string Attrib, string AttribContent, string Content)
...{
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib, AttribContent);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}
/**//// <summary>
/// 插入一个节点,不带属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="MainNode"></param>
/// <param name="Element"></param>
/// <param name="Content"></param>
public static void InsertElement(ref XmlDocument objXmlDoc, string MainNode, string Element, string Content)
...{
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static string GetNodeValue(XmlNode node, string nodeName, string defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return element.InnerText;
}
return defaultValue;
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static bool GetNodeValueBoolean(XmlNode node, string nodeName, bool defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return Convert.ToBoolean(element.InnerText);
}
return defaultValue;
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static DateTime GetNodeValueDate(XmlNode node, string nodeName, DateTime defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
try
...{
return Convert.ToDateTime(element.InnerText);
}
catch
...{
return defaultValue;
}
}
return defaultValue;
// node does not exist / data conversion error - legacy issue: use default value
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static int GetNodeValueInt(XmlNode node, string nodeName, int defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return Convert.ToInt32(element.InnerText);
}
// node does not exist / data conversion error - legacy issue: use default value
return defaultValue;
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static float GetNodeValueSingle(XmlNode node, string nodeName, float defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return Convert.ToSingle(element.InnerText);
}
// node does not exist / data conversion error - legacy issue: use default value
return defaultValue;
}
/**//// <summary>
/// 连载对象
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string Serialize(object obj)
...{
XmlDocument xmlDoc = new XmlDocument();
XmlSerializer serializer;
StringWriter stringWriter;
serializer = new XmlSerializer(obj.GetType());
stringWriter = new StringWriter();
serializer.Serialize(stringWriter, obj);
xmlDoc.LoadXml(stringWriter.GetStringBuilder().ToString());
XmlNode xmlDocElement = xmlDoc.DocumentElement;
xmlDocElement.Attributes.Remove(xmlDocElement.Attributes["xmlns:xsd"]);
xmlDocElement.Attributes.Remove(xmlDocElement.Attributes["xmlns:xsi"]);
return xmlDocElement.OuterXml;
}
/**//// <summary>
/// xmlencode网页内容
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static string XMLEncode(string html)
...{
return "<![CDATA[" + html + "]]>";
}
public static void SaveConnectionStringToConfig(FileInfo configfile, string connectionstring)
...{
if (configfile.Exists)
...{
try
...{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(configfile.FullName);
//修改连接字符串
foreach (XmlNode Node in xmlDocument["configuration"]["connectionStrings"])
...{
if (Node.Name == "add")
...{
if (Node.Attributes.GetNamedItem("name").Value == "Connection String")
...{
Node.Attributes.GetNamedItem("connectionString").Value = connectionstring;
}
}
}
xmlDocument.Save(configfile.FullName);
}
catch
...{ }
}
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.Serialization;
using System.IO;
using System.Net;
using System.Data;
namespace Beasyer.Lib
... {
public static class XmlHelper
...{
/**//// <summary>
/// 由路径获取xml对象
/// </summary>
/// <param name="contentUrl"></param>
/// <returns></returns>
public static XmlDocument GetXMLContent(string contentUrl)
...{
XmlDocument returnValue;
returnValue = new XmlDocument();
WebRequest webRequest = WebRequest.Create(contentUrl);
WebResponse webResponse = webRequest.GetResponse();
XmlReader xmlReader = new XmlTextReader(webResponse.GetResponseStream());
returnValue.Load(xmlReader);
return returnValue;
}
/**//// <summary>
/// 由路径获取xsl对象
/// </summary>
/// <param name="contentURL"></param>
/// <returns></returns>
public static XslCompiledTransform GetXSLContent(string contentURL)
...{
XslCompiledTransform returnValue;
returnValue = new XslCompiledTransform();
WebRequest webRequest = WebRequest.Create(contentURL);
WebResponse webResponse = webRequest.GetResponse();
XmlReader xslTransform = new XmlTextReader(webResponse.GetResponseStream());
returnValue.Load(xslTransform, null, null);
return returnValue;
}
/**//// <summary>
/// 新建xmlattribute属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="attributeName"></param>
/// <param name="attributeValue"></param>
/// <returns></returns>
public static XmlAttribute CreateAttribute(XmlDocument objXmlDoc, string attributeName, string attributeValue)
...{
XmlAttribute attribute = objXmlDoc.CreateAttribute(attributeName);
attribute.Value = attributeValue;
return attribute;
}
/**//// <summary>
/// 新建xmlelement属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="nodeName"></param>
/// <param name="nodeValue"></param>
/// <returns></returns>
public static XmlElement CreateElement(XmlDocument objXmlDoc, string nodeName, string nodeValue)
...{
XmlElement element = objXmlDoc.CreateElement(nodeName);
element.InnerText = nodeValue;
return element;
}
/**//// <summary>
/// 查找数据。返回一个DataSet
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="XmlPathNode"></param>
/// <returns>DataSet</returns>
public static DataSet GetDataFromNode(XmlDocument objXmlDoc, string XmlPathNode)
...{
DataSet ds = new DataSet();
StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
return ds;
}
/**//// <summary>
/// 更新节点內容
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="XmlPathNode"></param>
/// <param name="Content"></param>
public static void UpdateNode(ref XmlDocument objXmlDoc, string XmlPathNode, string Content)
...{
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
}
/**//// <summary>
/// 刪除一个节点
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="Node"></param>
public static void DeleteNode(ref XmlDocument objXmlDoc, string Node)
...{
string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
}
/**//// <summary>
/// 插入一节点和此节点的一子节点
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="MainNode"></param>
/// <param name="ChildNode"></param>
/// <param name="Element"></param>
/// <param name="Content"></param>
public static void InsertNode(ref XmlDocument objXmlDoc, string MainNode, string ChildNode, string Element, string Content)
...{
XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objChildNode.AppendChild(objElement);
}
/**//// <summary>
/// 插入一个节点,带一属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="MainNode"></param>
/// <param name="Element"></param>
/// <param name="Attrib"></param>
/// <param name="AttribContent"></param>
/// <param name="Content"></param>
public static void InsertElement(ref XmlDocument objXmlDoc, string MainNode, string Element, string Attrib, string AttribContent, string Content)
...{
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib, AttribContent);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}
/**//// <summary>
/// 插入一个节点,不带属性
/// </summary>
/// <param name="objXmlDoc"></param>
/// <param name="MainNode"></param>
/// <param name="Element"></param>
/// <param name="Content"></param>
public static void InsertElement(ref XmlDocument objXmlDoc, string MainNode, string Element, string Content)
...{
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static string GetNodeValue(XmlNode node, string nodeName, string defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return element.InnerText;
}
return defaultValue;
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static bool GetNodeValueBoolean(XmlNode node, string nodeName, bool defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return Convert.ToBoolean(element.InnerText);
}
return defaultValue;
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static DateTime GetNodeValueDate(XmlNode node, string nodeName, DateTime defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
try
...{
return Convert.ToDateTime(element.InnerText);
}
catch
...{
return defaultValue;
}
}
return defaultValue;
// node does not exist / data conversion error - legacy issue: use default value
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static int GetNodeValueInt(XmlNode node, string nodeName, int defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return Convert.ToInt32(element.InnerText);
}
// node does not exist / data conversion error - legacy issue: use default value
return defaultValue;
}
/**//// <summary>
/// 获取节点的值
/// </summary>
/// <param name="node"></param>
/// <param name="nodeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static float GetNodeValueSingle(XmlNode node, string nodeName, float defaultValue)
...{
XmlElement element = node[nodeName];
if (element != null && element.InnerText.Length > 0)
...{
return Convert.ToSingle(element.InnerText);
}
// node does not exist / data conversion error - legacy issue: use default value
return defaultValue;
}
/**//// <summary>
/// 连载对象
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string Serialize(object obj)
...{
XmlDocument xmlDoc = new XmlDocument();
XmlSerializer serializer;
StringWriter stringWriter;
serializer = new XmlSerializer(obj.GetType());
stringWriter = new StringWriter();
serializer.Serialize(stringWriter, obj);
xmlDoc.LoadXml(stringWriter.GetStringBuilder().ToString());
XmlNode xmlDocElement = xmlDoc.DocumentElement;
xmlDocElement.Attributes.Remove(xmlDocElement.Attributes["xmlns:xsd"]);
xmlDocElement.Attributes.Remove(xmlDocElement.Attributes["xmlns:xsi"]);
return xmlDocElement.OuterXml;
}
/**//// <summary>
/// xmlencode网页内容
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static string XMLEncode(string html)
...{
return "<![CDATA[" + html + "]]>";
}
public static void SaveConnectionStringToConfig(FileInfo configfile, string connectionstring)
...{
if (configfile.Exists)
...{
try
...{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(configfile.FullName);
//修改连接字符串
foreach (XmlNode Node in xmlDocument["configuration"]["connectionStrings"])
...{
if (Node.Name == "add")
...{
if (Node.Attributes.GetNamedItem("name").Value == "Connection String")
...{
Node.Attributes.GetNamedItem("connectionString").Value = connectionstring;
}
}
}
xmlDocument.Save(configfile.FullName);
}
catch
...{ }
}
}
}
}