使用XML空间读取XML文件
(1)DocumentSource和TransformSource属性
Document:该属性表示使用XmlDocument对象来设置XML文档。
DocumentContent:使用字符串来设置XML文档,该属性通常是以声明方式设置,具体方法是在XML控件的<asp:Xml>标记的开始和结束之间放置文本。
DocumentSource:该属性使用文件来设置XML文档。
Transform:使用指定的XslTransform类对象格式化XML文档。
TransformSource:使用指定的XSL转换文件格式化XML文档。
XmlDocument xd = new XmlDocument();//创建XmlDocument对象
xd.Load(Server.MapPath("XMLFile.xml"));加载指定的XML数据
在ASP.NET中,XmlDocument类实现W3C文档对象模型(DOM),该类的常用方法如下:
AppendChild():将指定的节点添加到该节点的子节点列表的末尾。
Clone():创建此节点的一个副本。
CreateAttribute():创建具有指定名称的XmlAttribute对象。
CreateComment():创建包含指定数据的XmlComment对象。
CreateDocumentType():返回新的XmlDocumentType对象。
CreateElement():创建元素。
CreateNode():创建指定类型的节点,如创建文档声明等。
CreateTextNode():创建具有指定文本的XmlText。
Equals():确定两个Object实例是否相等。
Save():将XML文档保存到指定的位置。
Load():加载指定的XML数据
使用XmlDocument类解析XML文档
使用该类对文档进行解析,一般步骤如下:
1)通过XML文档创建DOM树。
2)遍历元素(根元素的下级节点),获取该元素的属性、字符数据和所有子节点等。
3)遍历子节点,获取元素的属性和字符数据,如果该节点还有子节点,获取所有子节点,然后重复第三步,直到遍历完该文档的所有节点为止。
//遍历节点元素
XmlNodeList list=doc.GetElementsByTagName("friend");
for(int i=0;i<list.Count;i++)
{
XmlNode node=list.Item(i);
//获取friend元素的属性
XmlNode attr=node.Attributes.Item(0);
str+=attr.Name+"="+attr.FirstChild.InnerText+"</br>";
//遍历friend元素的子元素
XmlNodeList l=node.ChildNodes;
for(int j=0;j<l.Count;j++)
{
XmlNode n=l.Item(j);
//获取元素标记和字符数据
str+=n.Name+":"+n.FirstChild.InnerText+"</br>";
}
str+="</p>";
}
Label1.Text=str;
使用XmlDocument类创建XML文档
1)使用LoadXml(string xml)方法和Save(string fileName)方法,即将文档中的内容以字符串的形式作为LoadXml(string xml)方法的参数,从该字符串加载到XML文档,然后调用该类的Save(string fileName)方法将其保存到文件中
2)按照XML的结构一步一步的构建XML文档。首先创建一个空的XML文档,即创建该类的对象;然后在该XML的文档的最头部加入XML的声明段落,通过该类中的CreateNode()方法创建;最后是为XML文档加入元素和属性等。
XmlDocument doc = new XmlDocument();
//加入XML的声明
XmlNode declare = doc.CreateNode(XmlNodeType.XmlDeclaration,"","");
doc.AppendChild(declare);
//加入一个根元素catalog
XmlElement root=doc.CreateElement("","catalog","");
doc.AppendChild(root);
//加入cd元素
XmlElement elem1=doc.CreateElement("vcd");
root.AppendChild(elem1);
//加入name元素,值为Maggie May
XmlElement node1=doc.CreateElement("name");
XmlText name=doc.CreateTextNode("Maggie May");
node1.AppendChild(name);
elem1.AppendChild(node1);
//加入artist,值为Rod Stewart
XmlElement node2=doc.CreateElement("artist");
XmlText artist=doc.CreateTextNode("Rod Stewart");
node2.AppendChild(artist);
elem1.AppendChild(node2);
//加入company元素,值为Pickwick
XmlElement node3=doc.CreateElement("company");
XmlText company=doc.CreateTextNode("Pickwick");
node3.AppendChild(company);
elem1.AppendChild(node3);
//保存
doc.Save("d:\\vcd.xml");
//重新打开
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("d:\\vcd.xml");
XmlTextReader类读取XML文档
XmlTextReader tr = new XmlTextReader(Server.MapPath("XMLFile.xml"));
while (tr.Read())
{
switch (tr.NodeType)
{
//文档声明
case XmlNodeType.XmlDeclaration:
Response.Write(Server.HtmlEncode("<?" + tr.Name + tr.Value + "?>") + "</br>");
break;
//DOCTYPE
case XmlNodeType.DocumentType:
Response.Write(Server.HtmlEncode("<!DOCTYPE" + tr.Name + "[" + tr.Value + "]") + "</br>");
break;
//元素开始
case XmlNodeType.Element:
Response.Write(Server.HtmlEncode("<" + tr.Name + ">") );
break;
//字符数据
case XmlNodeType.Text:
Response.Write(tr.Value );
break;
//元素结束
case XmlNodeType.EndElement:
Response.Write(Server.HtmlEncode("</" + tr.Name + ">") + "</br>");
break;
//解释
case XmlNodeType.Comment:
Response.Write(Server.HtmlEncode("<!--" + tr.Value + "--!>") + "</br>");
break;
case XmlNodeType.Attribute:
Response.Write(Server.HtmlEncode(tr.Name + "=" + tr.Value));
break;
}
XmlTextWriter类创建XML文档
XmlTextWriter writer = new
XmlTextWriter(Server.MapPath("~") + "\\2.xml", System.Text.Encoding.UTF8);
//文档开始
writer.WriteStartDocument();
//根元素
writer.WriteStartElement("users");
//创建元素infor
writer.WriteStartElement("infor" );
//为元素infor添加属性
writer.WriteAttributeString("id", "k001" );
writer.WriteElementString("name", "李华");
writer.WriteElementString("age", "25" );
writer.WriteElementString("email", "[email protected]" );
writer.WriteStartElement("Requestinfor" );
writer.WriteAttributeString("time", DateTime.Now.ToString() );
writer.WriteElementString("Type", Request.RequestType );
writer.WriteElementString("IP", Request.UserHostAddress );
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
//文档结束
writer.WriteEndDocument();
writer.Close();
在ADO.NET组件中DataSet是其核心组件之一,它提供了独立于数据源的数据访问功能。为了实现这种平台互用性和可伸缩的数据访问,ADO.NET采用了基于XML的数据传输格式,XML在这里充当了至关重要的角色。DataSet可将数据和架构作为XML文档进行读写,当数据传输时,ADO.NET是将DataSet表述为XML,然后以XML格式传递给其它组件。例如:
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("AddressList.xml"));
dg.DataSource = ds.Tables[0].DefaultView;
dg.DataBind();
另外,DataSet数据集支持的最直接的XML方法就是GetXml() 和GetXmlSchema()了,该方法只将XML数据或XSD架构作为一个字符串值返回,核心代码如下所示:
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("Order.xml"));
ds.ReadXmlSchema(Server.MapPath("Order.xsd"));
Response.Write(ds.GetXml());
Response.Write(ds.GetXmlSchema());