1、创建 XML
导入命名空间:
using System.Xml;
//创建 XML 对象
XmlDocument xmlDocument = new XmlDocument();
// 声明 XML
XmlDeclaration xmlDeclare =xmlDocument.CreateXmlDeclaration("1.0","utf-8",null);
//创建根节点
XmlElement elementRoot =xmlDocument.CreateElement("Nodes");
xmlDocument.AppendChild(elementRoot);
//创建节点 Day
XmlElement elementDay = xmlDocument.CreateElement("Day");
//给节点Day设置属性,并赋值
elementDay.SetAttribute("date","今天");
elementRoot.AppendChild(elementDay);
//创建 Day 的子节点Part
XmlElement elementPart = xmlDocument.CreateElement("Part");
elementPart.InnerText = " aaa";
elementDay.AppendChild(elementPart);
//保存到 XML 文件件下
xmlDocument.Save("./myXml.xml");
xml 生成数据:
<Notes>
<Day date="今天">
<part>aaa</part>
</Day>
</Notes>
2.读写XML文件
<?xml version="1.0" encoding="utf-8" ?>
<PhoneBook>
<phone id="001">
<Name>加菲尔德</Name>
<Number>5555555</Number>
<City>纽约</City>
<DateOfBirth>26/10/1978</DateOfBirth>
</phone>
<phone id="002">
<Name>迈克</Name>
<Number>6666666</Number>
<City>纽约</City>
<DateOfBirth>12/02/1978</DateOfBirth>
</phone>
</PhoneBook>
*********************************************************************
·使用Document读取及写入XML方法
private void xmlfun()
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("phone.xml"));
XmlElement node = doc.CreateElement("phone");
XmlAttribute atr = doc.CreateAttribute("id");
atr.InnerText = "003";
node.Attributes.Append(atr);
XmlNode xnode = (XmlNode)doc.CreateElement("Name");
xnode.InnerText="testName";
node.AppendChild(xnode);
xnode = (XmlNode)doc.CreateElement("Number");
xnode.InnerText="119";
node.AppendChild(xnode);
xnode = (XmlNode)doc.CreateElement("City");
xnode.InnerText="cs";
node.AppendChild(xnode);
xnode = (XmlNode)doc.CreateElement("DateOfBirth");
xnode.InnerText="12/02/1978";
node.AppendChild(xnode);
doc.DocumentElement.InsertAfter(node,doc.DocumentElement.LastChild);
doc.Save(Server.MapPath("phone1.xml")); //必须要存为不同的文件
}
·使用XmlTextWriter写入XML方法
private void xmlwriter()
{
XmlTextWriter writer= new XmlTextWriter(Server.MapPath("phone4.xml"),null);
writer.Formatting = Formatting.Indented; //缩进格式
writer.Indentation =4;
writer.WriteStartDocument();
writer.WriteStartElement("Person");
writer.WriteStartAttribute("ID",null);
writer.WriteString("004");
writer.WriteEndAttribute();
writer.WriteStartElement("Name");
writer.WriteString("testWriterName");
writer.WriteEndElement();
writer.WriteStartElement("Number");
writer.WriteString("88888");
writer.WriteEndElement();
writer.WriteStartElement("City");
writer.WriteString("testWriterCity");
writer.WriteEndElement();
writer.Flush();
writer.Close();
}
·使用XmlTextReader读取XML方法
private void xmlread()
{
XmlTextReader reader = new XmlTextReader(Server.MapPath("phone.xml"));
while(reader.Read())
{
if(reader.LocalName.Equals("Name") || reader.LocalName.Equals("Number"))
{
this.Label1.Text += reader.ReadString()+"t";
}
·作用SqlCommand.ExecuteXmlReader()取得XML
SqlConnecting conn = new SqlConnection(CONNSTR);
SqlCommand cmd = new SqlCommand("select fname from employee for xml auto",conn);
conn.open();
XmlReader reader = cmd.ExecuteXmlReader();
......
################ 所取xml数据格式 #################
<employee fname="aria"/>
<employee fname="carlors"/>......
3.查找xml
<Placemark>
<description>Front line</description>
<Name>sole</Name>
<styleUrl>#roadStyle</styleUrl>
<LineString>
<coordinates>
114.0456,22.324
</coordinates>
</LineString>
</Placemark>
如何根据Name的值找到这个Placemark
让后插入数据到
coordinates节点中呢。
XmlElement Chid_Elent = Doc.DocumentElement; //得到XML的根节点
if (Chid_Elent.ChildNodes.Count > 0)//如果根节点下有子节点
{
foreach (XmlElement Elent in Chid_Elent.ChildNodes)//循环获取节点值
{
value=Elent.InnerText;//得到值
Elent.InnerText=vaue; //或者赋值 value为外部变量
}
}
最后save(路径)
4、显示所有数据
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
XmlNodeList xnl=xn.ChildNodes;
foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnf1=xe.ChildNodes;
foreach(XmlNode xn2 in xnf1)
{
Console.WriteLine(xn2.InnerText);//显示子节点点文本
}
}
最后附一个C#操作Xml通用工具类
using System;
using System.Xml;
namespace WLerp.Common.Util
{
/// <summary>
/// Xml 操作工具类
/// </summary>
public sealed class XmlUtil
{
private XmlUtil() { }
/// <summary>
/// 创建节点
/// </summary>
/// <param name="node"></param>
/// <param name="newElementName"></param>
/// <returns></returns>
public static XmlNode AppendElement(XmlNode node, string newElementName)
{
return AppendElement(node, newElementName, null);
}
/// <summary>
/// 创建节点
/// </summary>
/// <param name="node"></param>
/// <param name="newElementName"></param>
/// <param name="innerValue"></param>
/// <returns></returns>
public static XmlNode AppendElement(XmlNode node, string newElementName, string innerValue)
{
XmlNode oNode;
if (node is XmlDocument)
{
oNode = node.AppendChild(((XmlDocument)node).CreateElement(newElementName));
}
else
{
oNode = node.AppendChild(node.OwnerDocument.CreateElement(newElementName));
}
if (innerValue != null)
{
oNode.AppendChild(node.OwnerDocument.CreateTextNode(innerValue));
}
return oNode;
}
/// <summary>
/// 创建属性
/// </summary>
/// <param name="xmlDocument"></param>
/// <param name="name"></param>
/// <param name="value"></param>
/// <returns></returns>
public static XmlAttribute CreateAttribute(XmlDocument xmlDocument, string name, string value)
{
XmlAttribute oAtt = xmlDocument.CreateAttribute(name);
oAtt.Value = value;
return oAtt;
}
/// <summary>
/// 设置属性的值
/// </summary>
/// <param name="node"></param>
/// <param name="attributeName"></param>
/// <param name="attributeValue"></param>
public static void SetAttribute(XmlNode node, string attributeName, string attributeValue)
{
if (node.Attributes[attributeName] != null)
{
node.Attributes[attributeName].Value = attributeValue;
}
else
{
node.Attributes.Append(CreateAttribute(node.OwnerDocument, attributeName, attributeValue));
}
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="node"></param>
/// <param name="attributeName"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static string GetAttribute(XmlNode node, string attributeName, string defaultValue)
{
XmlAttribute att = node.Attributes[attributeName];
if (att != null)
{
return att.Value;
}
else
{
return defaultValue;
}
}
/// <summary>
/// 获取节点的值
/// </summary>
/// <param name="parentNode"></param>
/// <param name="nodeXPath"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static string GetNodeValue(XmlNode parentNode, string nodeXPath, string defaultValue)
{
XmlNode node = parentNode.SelectSingleNode(nodeXPath);
if (node.FirstChild != null)
{
return node.FirstChild.Value;
}
else if (node != null)
{
return node.Value;
}
else
{
return defaultValue;
}
}
}
}
读取XML节点属性值及节点值
protected void ReadNode_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("Student1.xml"));
XmlNodeList list = doc.GetElementsByTagName("StuName"); //Student1.xml文件里面的StuName节点
foreach (XmlElement host in list)
{
Response.Write("Student1.xml节点里面的StuName节点的name属性的值为:" + host.Attributes["name"].Value + "<br/>");
Response.Write("Student1.xml节点里面的StuName节点的id属性的值为:" + host.Attributes["id"].Value + "<br/>");
}
String d1 = doc.SelectSingleNode("//StuName[@id='1']/@name").Value;//读取stuname标签里面的id为1的name的值
Response.Write("Student1.xml节点里面的StuName节点的name属性的值为:" + d1 + "<br/>");
}
protected void readxml()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("Student1.xml")); //加载xml
XmlNodeList NodeList = xmlDoc.SelectNodes("/Students/Student"); //xml节点的路径
//循环遍历节点
for (int i = 0; i < NodeList.Count; i++)
{
string xmlStuName = NodeList[i].ChildNodes[0].InnerText; //获取第一个Student节点的StuName
string xmlStuSex = NodeList[i].ChildNodes[1].InnerText; //获取第一个Student节点的StuSex
string xmlStuAge = NodeList[i].ChildNodes[2].InnerText; //获取第一个Student节点的StuAge
string xmlStuAddress = NodeList[i].ChildNodes[3].InnerText; //获取第一个Student节点的StuAddress
//循环读取xml节点信息
Response.Write("当前的xml文件中的节点StuName是:" + xmlStuName + "<br />" + "当前的xml文件中的节点StuSex是:" + xmlStuSex + "<br />" + "当前的xml文件中的节点StuAge是:" + xmlStuAge + "<br />" + "当前的xml文件中的节点StuAddress是:" + xmlStuAddress);
}
}
Student1.xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<Students>
<Student>
<StuName id='1' name='lizong'>lili</StuName>
<StuSex>nan</StuSex>
<StuAge>24</StuAge>
<StuAddress>shenzhen</StuAddress>
</Student>
</Students>
把XML文件内容,通过Gridview显示
private void LoadGridView()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("xmltodataset.xml"));
this.GridView2.DataSource = ds;
this.GridView2.DataBind();
}
xmltodataset.xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<students>
<student>
<id>4</id>
<name id='1' name='zhangsan'>text4</name>
<age>21</age>
</student>
<student>
<id>5</id>
<name id='1' name='zhangsan'>text5</name>
<age>22</age>
<sex>nan</sex>
</student>
<student>
<id>1</id>
<name id='1' name='zhangsan'>text1</name>
<age>18</age>
</student>
<student>
<id>2</id>
<name id='1' name='zhangsan'>text2</name>
<age>19</age>
</student>
<student>
<id>3</id>
<name id='1' name='zhangsan'>text3</name>
<age>20</age>
</student>
</students>