在中如何操作XML
需要添加的命名空间
using SystemXml;
定义几个公共对象
XmlDocument xmldoc ;
XmlNode xmlnode ;
XmlElement xmlelem ;
创建到服务器同名目录下的xml文件
方法一
xmldoc = new XmlDocument ( ) ;
//加入XML的声明段落
xmlnode = xmldocCreateNode ( XmlNodeTypeXmlDeclaration ) ;
xmldocAppendChild ( xmlnode ) ;
//加入一个根元素
xmlelem = xmldocCreateElement ( Employees ) ;
xmldocAppendChild ( xmlelem ) ;
//加入另外一个元素
for(int i=;i<;i )
{
XmlNode root=xmldocSelectSingleNode(Employees);//查找<Employees>
XmlElement xe=xmldocCreateElement(Node);//创建一个<Node>节点
xeSetAttribute(genre李赞红);//设置该节点genre属性
xeSetAttribute(ISBN);//设置该节点ISBN属性
XmlElement xesub=xmldocCreateElement(title);
xesubInnerText=CS从入门到精通;//设置文本节点
xeAppendChild(xesub);//添加到<Node>节点中
XmlElement xesub=xmldocCreateElement(author);
xesubInnerText=候捷;
xeAppendChild(xesub);
XmlElement xesub=xmldocCreateElement(price);
xesubInnerText=;
xeAppendChild(xesub);
rootAppendChild(xe);//添加到<Employees>节点中
}
//保存创建好的XML文档
xmldocSave ( ServerMapPath(dataxml) ) ;
//////////////////////////////////////////////////////////////////////////////////////
结果在同名目录下生成了名为dataxml的文件内容如下
<?xml version=?>
<Employees>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
</Employees>
方法二
XmlTextWriter xmlWriter;
string strFilename = ServerMapPath(dataxml) ;
xmlWriter = new XmlTextWriter(strFilenameEncodingDefault);//创建一个xml文档
xmlWriterFormatting = FormattingIndented;
xmlWriterWriteStartDocument();
xmlWriterWriteStartElement(Employees);
xmlWriterWriteStartElement(Node);
xmlWriterWriteAttributeString(genre李赞红);
xmlWriterWriteAttributeString(ISBN);
xmlWriterWriteStartElement(title);
xmlWriterWriteString(CS从入门到精通);
xmlWriterWriteEndElement();
xmlWriterWriteStartElement(author);
xmlWriterWriteString(候捷);
xmlWriterWriteEndElement();
xmlWriterWriteStartElement(price);
xmlWriterWriteString();
xmlWriterWriteEndElement();
xmlWriterWriteEndElement();
xmlWriterClose();
//////////////////////////////////////////////////////////////////////////////////////
结果
<?xml version= encoding=gb?>
<Employees>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
</Employees>
添加一个结点
XmlDocument xmlDoc=new XmlDocument();
xmlDocLoad(ServerMapPath(dataxml));
XmlNode root=xmlDocSelectSingleNode(Employees);//查找<Employees>
XmlElement xe=xmlDocCreateElement(Node);//创建一个<Node>节点
xeSetAttribute(genre张三);//设置该节点genre属性
xeSetAttribute(ISBN);//设置该节点ISBN属性
XmlElement xesub=xmlDocCreateElement(title);
xesubInnerText=C#入门帮助;//设置文本节点
xeAppendChild(xesub);//添加到<Node>节点中
XmlElement xesub=xmlDocCreateElement(author);
xesubInnerText=高手;
xeAppendChild(xesub);
XmlElement xesub=xmlDocCreateElement(price);
xesubInnerText=;
xeAppendChild(xesub);
rootAppendChild(xe);//添加到<Employees>节点中
xmlDocSave ( ServerMapPath(dataxml) );
//////////////////////////////////////////////////////////////////////////////////////
结果在xml原有的内容里添加了一个结点内容如下
<?xml version=?>
<Employees>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=张三 ISBN=>
<title>C#入门帮助</title>
<author>高手</author>
<price></price>
</Node>
</Employees>
修改结点的值(属性和子结点)
XmlDocument xmlDoc=new XmlDocument();
xmlDocLoad( ServerMapPath(dataxml) );
XmlNodeList nodeList=xmlDocSelectSingleNode(Employees)ChildNodes;//获取Employees节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xeGetAttribute(genre)==张三)//如果genre属性值为张三
{
xeSetAttribute(genreupdate张三);//则修改该属性为update张三
XmlNodeList nls=xeChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn in nls)//遍历
{
XmlElement xe=(XmlElement)xn;//转换类型
if(xeName==author)//如果找到
{
xeInnerText=亚胜;//则修改
}
}
}
}
xmlDocSave( ServerMapPath(dataxml) );//保存
//////////////////////////////////////////////////////////////////////////////////////
结果将原来的所有结点的信息都修改了xml的内容如下
<?xml version=?>
<Employees>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=update张三 ISBN=>
<title>C#入门帮助</title>
<author>亚胜</author>
<price></price>
</Node>
</Employees>
修改结点(添加结点的属性和添加结点的自结点)
XmlDocument xmlDoc=new XmlDocument();
xmlDocLoad( ServerMapPath(dataxml) );
XmlNodeList nodeList=xmlDocSelectSingleNode(Employees)ChildNodes;//获取Employees节点的所有子节点
foreach(XmlNode xn in nodeList)
{
XmlElement xe=(XmlElement)xn;
xeSetAttribute(test);
XmlElement xesub=xmlDocCreateElement(flag);
xesubInnerText=;
xeAppendChild(xesub);
}
xmlDocSave( ServerMapPath(dataxml) );
//////////////////////////////////////////////////////////////////////////////////////
结果每个结点的属性都添加了一个子结点也添加了一个内容如下
<?xml version=?>
<Employees>
<Node genre=李赞红 ISBN= test=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
<flag></flag>
</Node>
<Node genre=李赞红 ISBN= test=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
<flag></flag>
</Node>
<Node genre=update张三 ISBN= test=>
<title>C#入门帮助</title>
<author>亚胜</author>
<price></price>
<flag></flag>
</Node>
</Employees>
删除结点中的某一个属性
XmlDocument xmlDoc=new XmlDocument();
xmlDocLoad( ServerMapPath(dataxml) );
XmlNodeList xnl=xmlDocSelectSingleNode(Employees)ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
xeRemoveAttribute(genre);//删除genre属性
XmlNodeList nls=xeChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn in nls)//遍历
{
XmlElement xe=(XmlElement)xn;//转换类型
if(xeName==flag)//如果找到
{
xeRemoveChild(xe);//则删除
}
}
}
xmlDocSave( ServerMapPath(dataxml) );
//////////////////////////////////////////////////////////////////////////////////////]
结果删除了结点的一个属性和结点的一个子结点内容如下
<?xml version=?>
<Employees>
<Node ISBN= test=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node ISBN= test=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node ISBN= test=>
<title>C#入门帮助</title>
<author>亚胜</author>
<price></price>
</Node>
</Employees>
删除结点
XmlDocument xmlDoc=new XmlDocument();
xmlDocLoad( ServerMapPath(dataxml) );
XmlNode root=xmlDocSelectSingleNode(Employees);
XmlNodeList xnl=xmlDocSelectSingleNode(Employees)ChildNodes;
for(int i=;i<xnlCount;i )
{
XmlElement xe=(XmlElement)xnlItem(i);
if(xeGetAttribute(genre)==张三)
{
rootRemoveChild(xe);
if(i<xnlCount)i=i;
}
}
xmlDocSave( ServerMapPath(dataxml) );
结果删除了符合条件的所有结点原来的内容
<?xml version=?>
<Employees>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=张三 ISBN=>
<title>C#入门帮助</title>
<author>高手</author>
<price></price>
</Node>
<Node genre=张三 ISBN=>
<title>C#入门帮助</title>
<author>高手</author>
<price></price>
</Node>
</Employees>
删除后的内容
<?xml version=?>
<Employees>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
<Node genre=李赞红 ISBN=>
<title>CS从入门到精通</title>
<author>候捷</author>
<price></price>
</Node>
</Employees>