`

XML一些常用的操作代码

阅读更多

1.XML文档操作
1.1加载一个XML文档

DimobjDocAsNewXmlDocument()
'--LoadxmldocumentSample.xml
objDoc.Load("Sample.xml")


1.2加载一个XML数据
DimobjDocAsNewXmlDocument()
DimstrXMLAsString
strXML="<Employees><Employeeid=”12345”><Employee_ID>12345</Employee_ID><Name>ZhangBin</Name></Employee></Employees>"

'--Loadxmldata
objDoc.Load(strXML)


1.3保存文档
'—Savexmldocument
objDoc.Save("Sample.xml")


2XML数据的查询
最常见的XML数据类型有:Element,Attribute,Comment,Text.
Element,指形如<Name>Tom<Name>的节点。它可以包括:Element,Text,Comment,ProcessingInstruction,CDATA,andEntityReference.
Attribute,指在<Employeeid=”12345”>中的粗体部分。
Comment,指形如:<!--mycomment-->的节点。
Text,指在<Name>Tom<Name>的粗体部分。
在XML中,可以用XmlNode对象来参照各种XML数据类型。
2.1查询已知绝对路径的节点(集)
objNodeList=objDoc.SelectNodes(“Company/Department/Employees/Employee”)
或者
objNodeList=objNode.SelectNodes(“/Company/Department/Employees/Employee”)
以上两种方法可返回一个NodeList对象,如果要返回单个节点可使用SelectSingleNode方法,该方法如果查询到一个或多个节点,返回第一个节点;如果没有查询的任何节点返回Nothing。例如:
objNode=objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)
IfNot(objNodeisNothing)then
‘-Doprocess
EndIf
2.2查询已知相对路径的节点(集)
可使用类似于文件路径的相对路径的方式来查询XML的数据
objNode=objDoc.SelectSingleNode(“Company/Department”)
objNodeList=objNode.SelectNodes(“../Department)
objNode=objNode.SelectNode(“Employees/Employee”)
2.3查询已知元素名的节点(集)
在使用不规则的层次文档时,由于不知道中间层次的元素名,可使用//符号来越过中间的节点,查询其子,孙或多层次下的其他所有元素。例如:
objNodeList=objDoc.SelectNodes(“Company//Employee”)
2.4查询属性(attribute)节点
以上的各种方法都返回元素(element)节点(集),返回属性(attribute),只需要采用相应的方法,在属性名前加一个@符号即可,例如:
objNodeList=objDoc.SelectNodes(“Company/Department/Employees/Employee/@id”)
objNodeList=objDoc.SelectNodes(“Company//@id”)
2.5查询Text节点
使用text()来获取Text节点。
objNode=objDoc.SelectSingleNode(“Company/Department/Deparmt_Name/text()”)
2.6查询特定条件的节点
使用[]符号来查询特定条件的节点。例如:
a.返回id号为10102的Employee节点
objNode=objDoc.SelectSingleNode(“Company/Department/Employees/Employee[@id=’10102’]”)
b.返回Name为ZhangQi的Name节点
objNode=objDoc.SelectSingleNode(“Company/Department/Employees/Employee/Name[text()=’ZhangQi’]”)
c.返回部门含有职员22345的部门名称节点
objNode=objDoc.SelectSingleNode("Company/Department[Employees/Employee/@id='22345']/Department_Name")
2.7查询多重模式的节点
使用|符号可以获得多重模式的节点。例如:
objNodeList=objDoc.SelectNodes(“Company/Department/Department_Name|Company/Department/Manager”)
2.8查询任意子节点
使用*符号可以返回当前节点的所有子节点。
objNodeList=objDoc.SelectNodes(“Company/*/Manager)
或者
objNodeList=objNode.ChildNodes

3XML数据的编辑
3.1增加一个元素的属性(attribute)节点
DimobjNodeAttrAsXmlNode
objNodeAttr=objDoc.CreateAttribute("id",Nothing)
objNodeAttr.InnerXml="101"
objNode.Attributes.Append(objNodeAttr)
3.2删除一个元素的属性
objNode.Attributes.Remove(objNodeAttr)
3.3增加一个子元素(Element)
DimobjNodeChildAsXmlNode
objNodeChild=objDoc.CreateElement(Nothing,"ID",Nothing)
objNodeChild.InnerXml="101"
objNode.AppendChild(objNodeChild)
3.4删除一个子元素
objNode.RemoveChild(objNodeChild)
3.5替换一个子元素
objNOde.ReplaceChild(newChild,oldChild)

4参考数据
<?xmlversion="1.0"encoding="UTF-8"?>
<Company>
<Departmentid="101">
<Department_Name>CaiWuBu</Department_Name>
<Manager>ZhangBin</Manager>
<Employees>
<Employeeid="12345">
<Employee_ID>12345</Employee_ID>
<Name>ZhangBin</Name>
<Gender>male</Gender>
</Employee>
<Employeeid="10101">
<Employee_ID>10101</Employee_ID>
<Name>ZhangQI</Name>
<Gender>female</Gender>
</Employee>
<Employeeid="10102">
<Employee_ID>10102</Employee_ID>
<Name>ZhangXia</Name>
<Gender>male</Gender>
</Employee>
<Employeeid="10201">
<Employee_ID>10201</Employee_ID>
<Name>ZhangChuang</Name>
<Gender>male</Gender>
</Employee>
<Employeeid="10202">
<Employee_ID>10202</Employee_ID>
<Name>ZhangJun</Name>
<Gender>male</Gender>
</Employee>
</Employees>
</Department>
<Departmentid="102">
<Department_Name>KaiFaBu</Department_Name>
<Manager>WangBin</Manager>
<Employees>
<Employeeid="22345">
<Employee_ID>22345</Employee_ID>
<Name>WangBin</Name>
<Gender>male</Gender>
</Employee>
<Employeeid="20101">
<Employee_ID>20101</Employee_ID>
<Name>WangQI</Name>
<Gender>female</Gender>
</Employee>
<Employeeid="20102">
<Employee_ID>20102</Employee_ID>
<Name>WangXia</Name>
<Gender>male</Gender>
</Employee>
<Employeeid="20201">
<Employee_ID>20201</Employee_ID>
<Name>WangChuang</Name>
<Gender>male</Gender>
</Employee>
<Employeeid="20202">
<Employee_ID>20201</Employee_ID>
<Name>WangJun</Name>
<Gender>male</Gender>
</Employee>
</Employees>
</Department>
</Company>


4:向目标XML文件添加新节点

<%@importnamespace='system.xml'%>
<%
System.Xml.XmlDocumentuserdom1=newSystem.Xml.XmlDocument,userdom2,userdom3;
userdom1.load(Server.MapPath("user.xml"));//装载需要操作的XML文件
userdom2=userdom1.selectSingleNode("alluser");//操作游标指向alluser节点,句柄给userdom2变量
userdom3=userdom1.createElement("fyw");//新创建一名为fyw的节点,并将句柄给userdom3变量
userdom3.setAttribute("name","风云舞");//为userdom3添加节点属性,新属性名为name,值为风云舞
userdom3.setAttribute("pass","123");
userdom3.innerText="测试";//设置userdom3节点所包含的数据
userdom2.AppendChild(userdom3);//userdom2即alluser节点下添加userdom3所描述的fyw节点
userdom1.save(Server.MapPath("user.xml"));//将变动后的新XML数据保存到user.xml
%>

5:修改XML节点

<%@importnamespace='system.xml'%>
<%
XmlDocumentuserdom1=newXmlDocument(),userdom2;
userdom1.load(Server.MapPath("user.xml"));
userdom2=userdom1.selectSingleNode("alluser").getElementsByTagName("fyw");//操作游标指向alluser节点下的fyw节点
userdom2(0).setAttribute("name","风云舞");//设定fyw节点数组的第一个,将其name属性值修改为风云舞
userdom2(0).innerText="测试";//设定fyw节点数组的第一个,将其所包含的数据改为测试
userdom1.save(Server.MapPath("user.xml"));//将变动后的新XML数据保存到user.xml
%>

6:查找判断XML节点是否存在

<%@importnamespace='system.xml'%>
<%
XmlDocumentuserdom1=newXmlDocument()
userdom1.load(Server.MapPath("user.xml"));//装载需要操作的XML文件
//以下正是本人为什么要用“用户帐号”标识用户唯一身份的目的,查找方便呀:)
if(userdom1.selectSingleNode("alluser").getElementsBytagname("fyw").count!=0)
t2("fyw节点以存在");
%>

7:批量添加XML节点(在编写回复帖子时,用第4例提到的方法一个一个填加节点很麻烦,这时可以考虑用此方法批量填加)

<%@importnamespace='system.xml'%>
<%
XmlDocumentfiledom=newXmlDocument(),filedom2;
filedom.load(Server.MapPath("data\"&Request.QueryString["dex"]));//request.querystring("dex")=6.xml
filedom2=filedom.createElement("reply");
//以下这种方法很方便,而且对XML文件的结构排版也很好,合理的空格和回车可以表现良好的XML文档结构
filedom2.innerXml=vbcrlf+"<anthor>"+session("who")+"</anthor>\n"+"<date>"+System.DataTime.Now.ToString()+"</date>\n"+"<gengxindate>"+System.DataTime.Now.ToString()+"</gengxindate>\n<body>"+neirong.value+"</body>\n";
filedom.selectSingleNode("document/record").appendChild(filedom2);
filedom.save(Server.MapPath("data\"+Request.QueryString["dex"]));//request.querystring("dex")=6.xml
%>

8:删除XML节点

<%@importnamespace='system.xml'%>
<%
XmlDocumentuserdom1=newXmlDocument(),userdom2;
userdom1.load(Server.MapPath("user.xml"));
userdom1.documentElement.removeChild(userdom1.selectSingleNode("alluser/fyw"));//删除alluser节点下的所有fyw节点
userdom1.save(Server.MapPath("user.xml"));
%>

9:创建新的XML文件(可以创建任何类型后缀的文件,不局于XML文件)

<%@importnamespace='system.io'%>
<%
dimnewfile=newStreamWriter(server.mappath("data\"&newDirectoryInfo(server.mappath("data")).getfiles().length+1&".xml"),false,System.Text.Encoding.Default)
'以上我们指定默认编码方式为System.Text.encoding.default,或者可改为System.Text.encoding.GetEncoding("gb2312"),不然将以UTF8编码那样XML含有中文就无法正常工作了
newfile.write("<?xmlversion="&chr(34)&"1.0"&chr(34)&"encoding="&chr(34)&"gb2312"&chr(34)&"?>"&_
vbcrlf&"<?xml-stylesheettype='text/xsl'href='../file.aspx?dex="&filelength+1&".xml'?>"&vbcrlf&_
"<document>"&vbcrlf&"<record>"&vbcrlf&"<anthor>"&session("who")&"</anthor>"&vbcrlf&_
"<title>"&server.HTMLEncode(biaoti.value)&"</title>"&vbcrlf&"<date>"&now&"</date>"&vbcrlf&_
"<gengxindate>"&now&"</gengxindate>"&vbcrlf&"<body>"&server.HTMLEncode(neirong.text)&"</body>"&vbcrlf&_
"</record>"&vbcrlf&"</document>")
newfile.close:newfile=nothing
%>

10:删除指定文件

<%@importnamespace='system.io'%>
<%file.delete(server.mappath("data\2.xml"))%>

分享到:
评论

相关推荐

    vb6中xml 操作模块 完整代码.

    包含了常用的xml操作.并有详细说明.不需要在写任何代码.包含了xml的常用操作.代码中使用了xml4.0的库.需要自己手动添加.

    java xml常用操作代码

    将xml的创建,增加元素,查找元素,修改元素,使用dom,sax,dom4j方式解析xml文件,希望对大家有帮助

    c#中关于xml的常用操作(增、删、改、查)

    C#中Xml的常用操作,如增删改查等 附带有实例,可以方便查看与测试 代码详细,还有相关常用操作说明

    TinyXml静态库+演示代码

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...

    VC 读写XML文件实例运用

    VC项目中实现读写XML文件,包中有两个工程启动文件--VC6的.dsp和VS2010的.sln文件。代码中注释详细,包中另附“xml学习笔记.txt”文档,总结了针对xml读写操作的常用函数。

    Delphi向XML中添加节点数据.rar

    Delphi7向常用的XML文件中添加内容,按照XML的节点规则依次写入内容,自定义各个节点及节点内容,具体的操作代码如下示:  var  iXml: IDOMDocument;  iRoot, iNode, iNode2, iChild, iAttribute: IDOMNode;  ...

    DOM4J的读,写,创建XML文件操作

    使用DOM4J进行的一系列对XML文件的操作,包括读写,创建,同时注释出相关的常用的解析器,Document创建器

    tcl实例入门教程(包括常用的socket多线程xml解析数据库操作大量实例)

    知识点覆盖比较全面,要个20分不过分吧,有几本书认真讲过那些常用模块: socket, 数据库操作,xml解析,多线程,最具体的做法多半是一带而过,我可是一个例子一个例子做出来的。 把目录发给大家看看: 2.1 第1课:...

    tinyXML Json接口实现

    tinyXML Json接口实现 封装了tinyXml和Jxon常用操作另有有测试代码 VS2008测试通过

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

     好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。 第四章 XML语法 七.DTD的语法...

    mybatis生成xml项目

     这里还有一个重要的开发场景,开发过程中,对数据库的操作肯定很多,比如新增字段什么的,你只要将原先自动生成的一套代码删除,重新再生成一份,这就完美解决了,但是这样做的前提是,你必须对生成后的代码不改动...

    C#实现XML操作帮助类

    C#帮助类(Helper class)是一种用于封装常用功能的类。它通常包含一组静态方法,这些方法能够执行特定的任务或提供通用的功能。帮助类的目的是为了提高代码的可重用性和可维护性,避免重复编写相似的功能代码。 ...

    掌握HTML标记的常用标记 了解XML的作用 xml 课件

    Internet Explorer浏览器 随Windows操作系统一起安装的IE浏览器。 Netscape浏览器 最早出现的网景浏览器。 两种浏览器都支持大部分的HTML标记,对于个别的标记某种浏览器就不支持,如blink这个标记在网景浏览器中...

    XML学习指南 电子书

    那里有对本书的更正、读者的问题以及答案,获取有关XML进一步帮助的资源及相关技术,我的一些其他书籍的介绍和附加的信息。你可以给我发e-mail,地址是mjy@compuserve.com。欢迎你的意见和反馈信息。尽管我很少有...

    java常用代码

    工程简单的介绍了java常用类,并用这些类进行一些简单的操作 让初学者更好的了解java这门语言的特性。 1.StringAndInt.java 字符与整型的相互转换 2.WriteFile.java 简单的IO读写文件 3.CurrentMethod.java 获取当前...

    XML学习指南经典中文版

    那里有对本书的更正、读者的问题以及答案,获取有关XML进一步帮助的资源及相关技术,我的一些其他书籍的介绍和附加的信息。你可以给我发e-mail,地址是mjy@compuserve.com。欢迎你的意见和反馈信息。尽管我很少有...

    JSTL 表达式 入门 访问SQL和XML内容

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。在developerWorks 上其新系列的...

    .NET C# 常用知识点代码速查字典

    提供了 IDE IO ,WinForm,Web,和Xml 数据库操作, 网络操作 ,绘图,日期和字符串型数据操作 收集了各种常用的代码,可以用来学习,和修改代码为自己使用

    C#操作读取、写入XML文档的实用方法

    本文给大家分享一下C#操作(读取、写入)XML文档的实用方法,这种方法主要是对比较规范的XML文档进行操作,因为它(XML文档)和类对象是严格对应的,否则在反序列或序列化的时候会出现错误。其他的不用多说,直接看...

    兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码

    于是我将常用的xml操作封装为函数。经过一段时间的改进,现在已经很稳定了,用起来很舒服。 函数有—— xml_loadFile:xml同步/异步加载。 xml_transformNode:xsl转换。 xml_text:节点的文本。 selectSingleNode:...

Global site tag (gtag.js) - Google Analytics