读取Xml文档的元素和属性
<?xml version="1.0" encoding="utf-8" ?>
<StuInfo>
? <student>
??? <ID>1001</ID>
??? <Name>張三</Name>
??? <Sex>男</Sex>
??? <Birthday age="23">1987-1-12</Birthday>
? </student>
? <student>
??? <ID>1002</ID>
??? <Name>李四</Name>
??? <Sex>女</Sex>
??? <Birthday age="24">1986-5-12</Birthday>
? </student>
? <student>
??? <ID>1003</ID>
??? <Name>王二</Name>
??? <Sex>男</Sex>
??? <Birthday age="25">1985-1-15</Birthday>
? </student>
</StuInfo>
看看上面的文檔,當我們把它加載到內存中之后,各個節點都有自己的類型,首先整個xml都是document文檔
<?xml version="1.0" encoding="utf-8" ?>
它則是XmlDeclaration類型的
下面的StuInfo,student,ID,Name,sex,Birsthday都是Element類型
1001,1002,1003,張三,李四,王五等都是#Text類型的
知道上面的這些之后,那么我們在讀取元素的時候就可以通過某個節點的ChildNodes屬性獲取其子節點的集合,然后根據節點的類型,也就是NodeType屬性確定此節點是否是元素節點,或者文檔節點等,元素節點的名稱可以通過Names屬性獲取,其所對應的XML數據可以有InnerXml和OutXml,InnerText等來獲取
讀取屬性:
要訪問屬性的值,必須獲取該屬性的所屬的元素,當節點是元素的時候,可以通過HasAttribute方法查看是否存在任何與此元素相關的屬性,然后檢索屬性,通過XmlNode.Attributes[index]獲得相關值
下面看一個實例
?protected void Page_Load(object sender, EventArgs e)
??? {
??????? if(!IsPostBack)
??????? {
??????????? XmlDocument doc = new XmlDocument();
??????????? string path = Server.MapPath("~/XMLFile.xml");
??????????? doc.Load(path);
??????????? OperateXml(doc);
??????? }
??? }
??? #region 對xml文件進行操作的方法
??? public void OperateXml(XmlNode doc)
??? {
?????? //通過XmlDocument把xml文件加載到內存中,然后才能對其操作
?????? Response.Write("<li>節點類型"+doc.NodeType.ToString()+"節點名稱"+doc.LocalName);
?????? if (!doc.HasChildNodes)
?????? {
?????????? Response.Write(" " + doc.InnerXml);
?????? }
?????? if(doc.NodeType==XmlNodeType.Element)
?????? {
??????????
?????????? if(doc.Attributes.Count>0)
?????????? {
?????????????? XmlAttribute dd = new XmlAttribute();
??????????????
?????????????? for (int i = 0; i < doc.Attributes.Count; i++)
?????????????? {
?????????????????? Response.Write("屬性:" + doc.Attributes[i].LocalName + "=" + doc.Attributes[i].Value);
?????????????? }
?????????? }
?????????? if(doc.ChildNodes[0].NodeType==XmlNodeType.Text)
?????????? {
?????????????? Response.Write(" 值為"+doc.InnerText);
?????????? }
?????? }?
?????? if (doc.HasChildNodes)
?????? {
?????????? for (int i = 0; i < doc.ChildNodes.Count; i++)
?????????? {
?????????????? OperateXml(doc.ChildNodes[i]);
?????????? }
?????? }
??????
??? }
??? #endregion
}
在這里采用的遞歸的方式完成的對子節點的操作
里面的方法很多,操作的時候靈活使用!
總結
以上是生活随笔為你收集整理的读取Xml文档的元素和属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《大话存储__网络存储系原理精解与最佳实
- 下一篇: high-speed A/D perfo