我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程.
已知有一个XML文件(bookstore.xml)如下:
<?xml version= encoding= ?><bookstore> <book genre= ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book></bookstore>
1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument( );
xmlDoc.Load( );
XmlNode root=xmlDoc.SelectSingleNode( );
//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement( );
//创建一个<book>节点
xe1.SetAttribute( , );
//设置该节点genre属性
xe1.SetAttribute( , );
//设置该节点ISBN属性
XmlElement xesub1=xmlDoc.CreateElement( );
xesub1.InnerText= ;
//设置文本节点
xe1.AppendChild( xesub1 );
//添加到<book>节点中
XmlElement xesub2=xmlDoc.CreateElement( );
xesub2.InnerText= ;
xe1.AppendChild( xesub2 );
XmlElement xesub3=xmlDoc.CreateElement( );
xesub3.InnerText= ;
xe1.AppendChild( xesub3 );
root.AppendChild( xe1 );
//添加到<bookstore>节点中
xmlDoc.Save( );
//===============================================
结果为:
<?xml version= encoding= ?><bookstore> <book genre= ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book> <book genre= ISBN= >
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price> </book></bookstore>
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”.
XmlNodeList nodeList=xmlDoc.SelectSingleNode( ).ChildNodes;
//获取bookstore节点的所有子节点
foreach( XmlNode xn in nodeList ) //遍历所有子节点
{
XmlElement xe=( XmlElement )xn;
//将子节点类型转换为XmlElement类型
if( xe.GetAttribute( )== ) //如果genre属性值为“李赞红”
{
xe.SetAttribute( , );
//则修改该属性为“update李赞红”
XmlNodeList nls=xe.ChildNodes;
//继续获取xe子节点的所有子节点
foreach( XmlNode xn1 in nls ) //遍历
{
XmlElement xe2=( XmlElement )xn1;
//转换类型
if( xe2.Name== ) //如果找到
{
xe2.InnerText= ;
//则修改
break;
//找到退出来就可以了
}
}
break;
}
}
xmlDoc.Save( );
//保存.
//==================================================
最后结果为:
<?xml version= encoding= ?><bookstore> <book genre= ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book> <book genre= ISBN= >
<title>CS从入门到精通</title>
<author>亚胜</author>
<price>58.3</price> </book></bookstore>
3、删除 <book genre= ISBN= >节点的genre属性,删除 <book genre= ISBN= >节点.
XmlNodeList xnl=xmlDoc.SelectSingleNode( ).ChildNodes;
foreach( XmlNode xn in xnl )
{
XmlElement xe=( XmlElement )xn;
if( xe.GetAttribute( )== )
{
xe.RemoveAttribute( );
//删除genre属性
}
else if( xe.GetAttribute( )== )
{
xe.RemoveAll( );
//删除该节点的全部内容
}
}
xmlDoc.Save( );
//===========================================最后结果为:
<?xml version= encoding= ?><bookstore> <book ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book> <book> </book></bookstore>
4、显示所有数据.
XmlNode xn=xmlDoc.SelectSingleNode( );
XmlNodeList xnl=xn.ChildNodes;
foreach( XmlNode xnf in xnl )
{
XmlElement xe=( XmlElement )xnf;
Console.WriteLine( xe.GetAttribute( ) );
//显示属性值
Console.WriteLine( xe.GetAttribute( ) );
XmlNodeList xnf1=xe.ChildNodes;
foreach( XmlNode xn2 in xnf1 )
{
Console.WriteLine( xn2.InnerText );
//显示子节点点文本
}
}
已知有一个XML文件(bookstore.xml)如下:
<?xml version= encoding= ?><bookstore> <book genre= ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book></bookstore>
1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument( );
xmlDoc.Load( );
XmlNode root=xmlDoc.SelectSingleNode( );
//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement( );
//创建一个<book>节点
xe1.SetAttribute( , );
//设置该节点genre属性
xe1.SetAttribute( , );
//设置该节点ISBN属性
XmlElement xesub1=xmlDoc.CreateElement( );
xesub1.InnerText= ;
//设置文本节点
xe1.AppendChild( xesub1 );
//添加到<book>节点中
XmlElement xesub2=xmlDoc.CreateElement( );
xesub2.InnerText= ;
xe1.AppendChild( xesub2 );
XmlElement xesub3=xmlDoc.CreateElement( );
xesub3.InnerText= ;
xe1.AppendChild( xesub3 );
root.AppendChild( xe1 );
//添加到<bookstore>节点中
xmlDoc.Save( );
//===============================================
结果为:
<?xml version= encoding= ?><bookstore> <book genre= ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book> <book genre= ISBN= >
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price> </book></bookstore>
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”.
XmlNodeList nodeList=xmlDoc.SelectSingleNode( ).ChildNodes;
//获取bookstore节点的所有子节点
foreach( XmlNode xn in nodeList ) //遍历所有子节点
{
XmlElement xe=( XmlElement )xn;
//将子节点类型转换为XmlElement类型
if( xe.GetAttribute( )== ) //如果genre属性值为“李赞红”
{
xe.SetAttribute( , );
//则修改该属性为“update李赞红”
XmlNodeList nls=xe.ChildNodes;
//继续获取xe子节点的所有子节点
foreach( XmlNode xn1 in nls ) //遍历
{
XmlElement xe2=( XmlElement )xn1;
//转换类型
if( xe2.Name== ) //如果找到
{
xe2.InnerText= ;
//则修改
break;
//找到退出来就可以了
}
}
break;
}
}
xmlDoc.Save( );
//保存.
//==================================================
最后结果为:
<?xml version= encoding= ?><bookstore> <book genre= ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book> <book genre= ISBN= >
<title>CS从入门到精通</title>
<author>亚胜</author>
<price>58.3</price> </book></bookstore>
3、删除 <book genre= ISBN= >节点的genre属性,删除 <book genre= ISBN= >节点.
XmlNodeList xnl=xmlDoc.SelectSingleNode( ).ChildNodes;
foreach( XmlNode xn in xnl )
{
XmlElement xe=( XmlElement )xn;
if( xe.GetAttribute( )== )
{
xe.RemoveAttribute( );
//删除genre属性
}
else if( xe.GetAttribute( )== )
{
xe.RemoveAll( );
//删除该节点的全部内容
}
}
xmlDoc.Save( );
//===========================================最后结果为:
<?xml version= encoding= ?><bookstore> <book ISBN= >
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> </book> <book> </book></bookstore>
4、显示所有数据.
XmlNode xn=xmlDoc.SelectSingleNode( );
XmlNodeList xnl=xn.ChildNodes;
foreach( XmlNode xnf in xnl )
{
XmlElement xe=( XmlElement )xnf;
Console.WriteLine( xe.GetAttribute( ) );
//显示属性值
Console.WriteLine( xe.GetAttribute( ) );
XmlNodeList xnf1=xe.ChildNodes;
foreach( XmlNode xn2 in xnf1 )
{
Console.WriteLine( xn2.InnerText );
//显示子节点点文本
}
}