c#操作xml文件示例_C#教程-查字典教程网
c#操作xml文件示例
c#操作xml文件示例
发布时间:2016-12-28 来源:查字典编辑
摘要:1.新增XML文件复制代码代码如下:XMLToolV2_xmlHelper=newXMLToolV2(@"C:20140311blogs.x...

1. 新增XML文件

复制代码 代码如下:

XMLToolV2 _xmlHelper = new XMLToolV2(@"C:20140311blogs.xml");//xml保存路径或者读取路径

_xmlHelper.Create("Person", "utf-8");//跟节点名称:person;encode:utf-8

XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟节点后创建person节点

_xmlHelper.SetAttribute(_person, "Gender", "Man");//设置person节点属性Gender

_xmlHelper.SetAttribute(_person, "Address", "shanghai");//设置person节点属性Address

_xmlHelper.Save();//保存xml文件

上述代码实现效果:

那在Person节点继续增加节点,实现也很简单

复制代码 代码如下:

_xmlHelper.Create("Person", "utf-8");//跟节点名称:person;encode:utf-8

XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟节点后创建person节点

_xmlHelper.SetAttribute(_person, "Gender", "Man");//设置person节点属性Gender

_xmlHelper.SetAttribute(_person, "Address", "shanghai");//设置person节点属性Address

XmlElement _workLh = _xmlHelper.CreateElec(_person, "Work", "shanghai LH");//在person节点下增加work节点

_xmlHelper.SetAttribute(_workLh, "Year", "2013~");//设置work节点属性Title

XmlElement _workRK = _xmlHelper.CreateElec(_person, "Work", "shanghai Ranking");//在person节点下增加work节点

_xmlHelper.SetAttribute(_workRK, "Year", "2011~2013");//设置work节点属性Title

_xmlHelper.Save();//保存xml文件

上述代码实现效果:

2.读取节点的值,个人感觉xpath方式比linq to xml更为明了方便

复制代码 代码如下:

XMLToolV2 _xmlHelper = new XMLToolV2(@"C:20140311blogs.xml");//xml保存路径或者读取路径

XmlNode _person = _xmlHelper.Select("Person/Name/text()");

Console.WriteLine("Name:" + _person.InnerText);

XmlNode _gender = _xmlHelper.Select("Person/Name[@Gender='Man']");

Console.WriteLine("Gender:" + _gender.Attributes["Gender"].Value);

Console.WriteLine("Address:" + _gender.Attributes["Address"].Value);

Console.WriteLine("-----------------------------");

XmlNodeList _workRecord = _xmlHelper.SelectNodeList("Person/Name/Work");

XMLToolV2.Loop(_workRecord, (XmlNode node) =>

{

Console.WriteLine("Work:" + node.InnerText + " Year:" + node.Attributes["Year"].Value);

});

上述代码实现效果:

3.格式化显示XML

复制代码 代码如下:

XMLToolV2 _xmlHelper = new XMLToolV2(@"C:20140311blogs.xml");//xml保存路径或者读取路径

string _xmlString = _xmlHelper.ShowXml();

Console.WriteLine(XMLToolV2.FormatXml(_xmlString, "utf-8"));

上述代码实现效果:

4.XMLToolV2源代码

复制代码 代码如下:

public class XMLToolV2

{

static string _xmlPath;

static XmlDocument _xmlDoc { get; set; }

static XmlElement _xmlRoot;

public XMLToolV2(string xmlPath)

{

_xmlPath = xmlPath;

LoadXmlDoc();

}

public XmlNode Select(string xPath)

{

if (string.IsNullOrEmpty(xPath))

throw new ArgumentNullException("xPath");

return _xmlDoc.SelectSingleNode(xPath);

}

public XmlNodeList SelectNodeList(string xPath)

{

if (string.IsNullOrEmpty(xPath))

throw new ArgumentNullException("xPath");

return _xmlDoc.SelectNodes(xPath);

}

public void Create(string rootName, string encode)

{

CreateXmlDoc(rootName, encode);

}

private void CreateXmlDoc(string rootName, string encode)

{

if (!File.Exists(_xmlPath))

{

if (string.IsNullOrEmpty(rootName))

throw new ArgumentNullException(rootName);

_xmlDoc = new XmlDocument();

XmlDeclaration _xmldecl = _xmlDoc.CreateXmlDeclaration("1.0", encode, null);

_xmlDoc.AppendChild(_xmldecl);

_xmlRoot = _xmlDoc.CreateElement("", rootName, "");

_xmlDoc.AppendChild(_xmlRoot);

}

}

public void LoadXmlDoc()

{

if (File.Exists(_xmlPath))

{

_xmlDoc = new XmlDocument();

_xmlDoc.Load(_xmlPath);

_xmlRoot = _xmlDoc.DocumentElement;

}

}

public void Save()

{

if (_xmlDoc != null)

{

_xmlDoc.Save(_xmlPath);

}

}

public XmlElement CreateElec(string elecName, string elecValue)

{

XmlElement _xElec = CreateElement(_xmlRoot, elecName, elecValue);

return _xElec;

}

private XmlElement CreateElement(XmlNode _xmldocSelect, string elecName, string elecValue)

{

if (_xmldocSelect != null)

{

XmlElement _xElec = _xmlDoc.CreateElement(elecName);

_xElec.InnerText = elecValue;

_xmldocSelect.AppendChild(_xElec);

return _xElec;

}

return null;

}

public XmlElement CreateElec(XmlElement xmlParentElec, string elecName, string elecValue)

{

if (xmlParentElec != null)

{

XmlElement _xElec = CreateElement(xmlParentElec, elecName, elecValue);

return _xElec;

}

return null;

}

public void SetAttribute(XmlElement xElement, string attrName, string attrValue)

{

if (xElement != null)

{

xElement.SetAttribute(attrName, attrValue);

}

}

public int Check(string xpath)

{

if (string.IsNullOrEmpty(xpath))

throw new ArgumentNullException("xpath");

return SelectNodeList(xpath).Count;

}

public string ShowXml()

{

if (_xmlDoc != null)

{

return _xmlDoc.OuterXml;

}

return string.Empty;

}

public static string FormatXml(string xmlString, string encode)

{

if (string.IsNullOrEmpty(xmlString))

throw new ArgumentNullException("xmlString");

if (string.IsNullOrEmpty(encode))

throw new ArgumentNullException("encode");

MemoryStream _mstream = new MemoryStream();

XmlTextWriter _writer = new XmlTextWriter(_mstream, null);

XmlDocument _xDoc = new XmlDocument();

_writer.Formatting = Formatting.Indented;

_xDoc.LoadXml(xmlString);

_xDoc.WriteTo(_writer);

_writer.Flush();

_writer.Close();

Encoding _encoding = Encoding.GetEncoding(encode);

string _xmlString = _encoding.GetString(_mstream.ToArray());

_mstream.Close();

return _xmlString;

}

public static void Loop(XmlNodeList nodeList, Action<XmlNode> xmlNode)

{

if (nodeList != null)

{

foreach (XmlNode xNode in nodeList)

{

xmlNode(xNode);

}

}

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类