读取Xml文档的元素和属性
2012-02-28 18:01
375 查看
<?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
}
在这里采用的递归的方式完成的对子节点的操作
里面的方法很多,操作的时候灵活使用!
<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文档的元素和属性
- java使用org.w3c.dom解析XML文档,创建、增删查改,保存,读取,遍历元素等操作
- 处理XML文档的DOM元素属性和方法
- javaScript 读取和设置文档元素的样式属性
- .NET:使用 XPATH 读取有 xmlns 属性的 XML 文档出现的问题
- [XML学习笔记]002-格式正规的XML文档、XML文档的元素、属性、实体深度详解
- spring的xml中注册bean的时候报错1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>
- javaScript读取和设置文档元素的样式属性
- XML学习笔记(二): 读取元素、属性和内容值
- 【XML】-- C#读取XML中元素和属性的值
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
- 用于处理XML文档的DOM元素属性
- 读取xml文档(标签 属性 文本)--------------②
- 处理及遍历XML文档DOM元素属性及方法整理
- jquery 解析xml文档 读取属性及文本内容
- PHP DOM操作xml文档,添加元素,添加元素属性
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- XML学习笔记(二): 读取元素、属性和内容值
- spring的xml中注册bean的时候报错1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>
- javaScript 读取和设置文档元素的样式属性