XML实用教程

JavaWeb系列四: XML 和 DOM4J xml学习 阅读详情
以文本方式查看主题

-  中国XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  XML实用教程  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=18600)


--  作者:xiaoye
--  发布时间:2005-5-20 22:46:00

--  XML实用教程

先来问一个问题
关于JS和XML
我用JS生成了一段XSL代码,比如

<xsl:for-each select="mycomputer/computer">

<xsl:value-of select="CPU1"/>

这个1是动态生成的,我在JS中用一个变量保存了<xsl:value-of select="CPU1"/>这段语句,然后想将它插入XSL中,请问应该怎样编写代码?



XML实用教程
    可扩展置标语言XML(eXtensible Markup Language)是由一系列规则所组成的描述语言,其本质为一种定义语言。任何行业均可遵循这些规则来定义各种标识,对信息中的元素进行描述,然后通过分析程序进行处理,使信息实现“自我描述”。
    对于大型的复杂文档,XML更是一种理想语言,其不仅允许指定文档中的词汇,且允许指定元素之间的关系。随着网络的发展,XML在网络开发中的地位已逐渐赶上HTML,很多浏览器已可良好地支持XML,XML正成为一种网络未来发展的主流语言。
    一、XML概述
    1.什么是XML
    从不同的角度分析,XML有不同的解释,具体如下所述:
    (1)XML是一种置标语言,置标指开发者可按需自定义任何符合规则的标记,而HTML仅是一种预定义标记语言,只可解析已定义的标记,对于自定义标记则无法解析。
    (2)XML是一种语义结构化语言,合理地描述了文件的结构和语义。
    (3)XML是一种通用的数据格式,也是一种简单的数据格式,由纯ASCII文本构成,因此抗破坏能力很强。
    (4)从高级角度分析,XML是一种自描述语言。
    2.XML的常用术语
    (1)DTD(Document Type Definition):即文件类型定义。定义的内容包括允许使用的标签、标签元素嵌套的方式及处理方法。XML标准不强制标记设计者使用DTD,但大部分基于XML开发的新语言均带有DTD,使开发者较易编写可理解的标记并编制出巧妙的软件。
    (2)XML文件:XML文件由DTD和XML文本组成,简单的XML文本可不包含DTD。 
    (3)XSL和CSS:XML可定义信息内容,但无法定义信息的表现形式。XML通过XSL(XML Style Language,XML样式语言)和CSS(Cascading Style Sheets,层叠样式表)来实现信息的转换。
    (4)XML Schema:虽然DTD限制标记的使用,但对于XML的自动处理仍需更严格和全面的工具,由此出现XML Schema。
    (5)DOM(Document Object Model):即文件对象模型。其将XML文件内容转换为一个对象模型,为应用程序提供访问XML文件的接口。
    (6)XSLT(XML Stylesheet Language Transformation):即XML样式转换语言。XSLT可从一个已定义的XML文件抽取所需的数据,并组成不同的形式。
    (7)Xpointer和Xlinks:Xpointer和Xlinks类似于HTML中的超级链接,用于链接其他XML文件或XML文件中的部分。
    (8)XML 框架:XML框架用于控制XML文件结构,是一种高层次的结构控制。
    二、XML语法详解
    1.XML的文件结构
    如前所述,XML允许自定义标记来形象地描述信息,假设需描述一台计算机的基本配置,可自定义一些易于理解的标记,如“computer”、“CPU”等。那么通过使用这些标记,一台计算机的基本配置,用XML描述如下所述: 
    <computer>
    <CPU>P4</CPU>
    <RAM>256M</RAM>
    <HardDisk>80G</HardDisk>
    </computer>
    上述内容,稍具计算机知识的读者可迅速地理解,也正是XML的优点。当然,标准的XML还需在文件的第一行添加“<?xml version=″1.0″?>”的声明语句,以表示该文件使用的XML版本。XML声明是一种处理指令。完整的XML声明示例如下所述:
    <?xml version = ″1.0″ encoding = ″GB2312″ standalone = ″no″?>
    在声明中必须包括“version”属性,用于设置所采用的XML版本号,且必须在属性列表中第一个出现。“standalone”属性代表该XML文档是否和一个外部文档类型定义DTD配套使用。“encoding”属性则设置数据所采用的编码标准。
    XML文件通常以XML声明开始,通过XML元素来组织数据。XML元素包括标记和字符数据。为使数据组织更方便、清晰,可在字符数据中添加CDATA数据块,并可添加注释。
    综上所述,可得XML文件的基本结构,如下所述:
    (1)XML文件以XML声明开始。
    (2)处理指令以“<?”字符开始,以“?>”结束,“<?”后的第一个单词为处理指令名。
    (3)自定义的标记用“<”和“>”字符包含,标记需成对出现,后一个标志需以“</”开始。
    (4)XML元素可包含正文和其他元素,但元素必须严格嵌套,即每个起始标记必须有对应的结束标记。
    (5)XML元素不能重叠。
    XML文件是纯文本文件,可用任何文本编辑器进行编制。如将前述计算机配置的XML文件在文本编辑器中以“xml”扩展名保存后,在5.0版本以上的IE浏览器中浏览,效果如<a href='H:/Data/pic/60090405a.jpg' target=Pic>图</a>1所示:
    2.XML文件的元素
    XML文件的元素可扩展,彼此之间存在关联,且元素的命名规则非常简单,如下所述:
    (1)XML元素可扩展:
    XML文件可进行扩展以保存更多的信息,如可为上文介绍的计算机基本配置的XML文件增加显示器内容,只需直接在原XML文件中加入“Monitor”标记即可,如下:
    <?xml version = ″1.0″ encoding = ″GB2312″ standalone = ″no″?>
    <computer>
    <CPU>P4</CPU>
    <RAM>256M</RAM>
    <HardDisk>80G</HardDisk>
    <Monitor>PHILIPS 107T</Monitor>
    </computer>
    (2)XML元素彼此关联:
    XML元素之间的关系如同一棵节点组成的树,各节点之间存在“兄弟”或“父子”的概念,在前述的计算机配置XML文件中,“computer”为根元素,“CPU”、“RAM”和“HardDisk”等均为“computer”的子元素。反之,“computer”是“CPU”和“RAM”的父元素。“CPU”和“RAM”之间由于其父元素相同,因此为兄弟元素。
    (3)XML元素对大小写敏感:
    XML元素对于大小写敏感,因此“<Computer>”和“<computer>”是不同的元素。
    (4)空元素的表示:
    XML表示空元素非常方便,将一个标签以“/>”符号结尾即表示空元素。
    (5)XML元素的保留字符:
    由于某些字符为XML语法结构的组成部分,因此如需在XML数据中引用,必须用特殊的字符来代替,这些字符和代替的字符如下表所示:
    (<a href='H:/Data/pic/60090405b.jpg' target=Pic>图</a>)
    (6)根元素的唯一性:
    每个XML文件必须有唯一的根元素,如在上述的计算机配置XML文件中。“computer”为该XML文件的唯一根元素。
    (7)元素的内容:
    XML元素包含不同的内容类型。一个XML元素由元素起始标记至结束标记之间的全部内容组成。一个元素可包含元素内容、混合内容、简单内容和空内容,还可包含属性。
    (8)元素的命名:
    XML元素必须遵循的命名规则如下所述:
    名字中可包含字母、数字及其他字母(如汉字);名字不能以数字或下划线开头;名字不能以字母“xml”(或XML、Xml等)开头;名字中不能包含空格;名字中不能使用“:”,由于其已为命名空间(namespaces)所保留。
    自定义元素名时,有一些技巧可供参考,如下所述: 
    名字应具有描述性,可通过下划线的方式使名称更形象;名字不易过长;由于XML文件通常和数据库相连接,因此建议将数据库的字段名称和XML文件元素名称相对应;非英文字母在XML元素名称中合法,但取决于解析器是否支持。
    3.XML属性 
    类似于HTML标记,XML元素也可在其起始标记中设计属性,以提供有关元素的附加信息。属性所提供的信息通常非数据的组成部分。
    属性值必须包含在引号中,且单、双引号均可使用。如可为计算机配置XML文件的“computer”标记增加一个用户的属性,如下所示: 
    <computer user=″马前雪″> 
    在单、双引号中,双引号较常用,但如属性值本身包含引号,则必须使用单引号。
    4.CDATA标记
    在CDATA标记下,所有的标记或实体引用均被XML解析器忽略,并作为字符数据处理。CDATA标记的语法如下所示:
    <![CDATA[
    文本内容
    ]] >
    CDATA标记中的文本内容不能出现字符串“]]>”,此外CDATA标记不能嵌套。
    如可将计算机配置XML文件的“CPU”标记用“CDATA”标记包括,如下所示: 
    <![CDATA[
    <CPU>P4</CPU>
    ]]>
    5.XML注释
    如需进一步增强XML文件的可读性,可添加解释性的字符数据,且希望XML解析器不对这些数据进行处理,该类型的信息称作注释。在XML中注释方法与HTML完全相同,用“<!--”和“-->”将注释文本包含即可。
    XML的注释有一些语法规则,如下所述:
    (1)注释文本中不能出现“-”字符或“--”字符串。
    (2)注释文本不能嵌入标记中,也不能放在标记声明之中或之前。
    (3)注释不能被嵌套。
    如可为计算机配置XML文件增加注释,如下所示:
    <!--  用XML描述计算机配置 -->
    在5.0版本以上的IE浏览器中浏览,效果如<a href='H:/Data/pic/60090405c.jpg' target=Pic>图</a>2所示:
    三、XSL概述
    1.什么是XSL
    XSL(可扩展样式表语言),即XML的样式表。由于XML可按需使用任意标记,因此标记的含义无法被直接解析。鉴于此,浏览器无法获悉如何显示一个XML文件。为显示XML文件,必须通过一个机制来描述显示的方式。XSL是XML的首选样式表语言,其不仅是样式表,且还是转换XML文件、定义XML部分和模式及格式化XML文件的方法。XSL语言的组成部分如下:
    XSLT:一种用于转换XML的语言。
    XPath:一种用于定义XML部分或模式的语言。
    2.XSL转换方法
    XSLT是一种将XML文件转换为其他类型文件或XML文件的语言。XPath是一种对XML文件的部分进行寻址的语言。格式化是将XSL转换结果变为适当输出格式的过程。通常XSLT将每个XML元素转换为HTML元素,还可向输出文件中增加或删除一些元素。
    在转换过程中,XSLT用XPath定义源文件中与一个或多个预定模板相匹配的部分。当找到一个匹配时,XSLT将源文件中的匹配部分转换为结果文件,源文件中不与任何一个模板匹配的部分在结果中保持不变。
    为理解XSL转换的效果,需创建一个结合XSL的XML文件,在后续内容中将以该文件为例进行介绍,其内容如下:
    <?xml version=″1.0″?> 
    <?xml-stylesheet type=″text/xsl″ href=″computer.xsl″?>
    <mycomputer>
    <computer>
    <CPU>P4</CPU>
    <RAM>256M</RAM>
    <HardDisk>80G</HardDisk>
    </computer>
    <computer>
    <CPU>C4</CPU>
    <RAM>128M</RAM>
    <HardDisk>40G</HardDisk>
    </computer>
    </mycomputer>
    该文件包含二台计算机的配置,因此按前述的XML文件结构,需增加一个唯一的根节点“mycomputer”,最后将该文件以“computer.xml”为文件名保存。
    在该文件中,“<?xml-stylesheet type=″text/xsl″ href=″computer.xsl″?>”语句用于关联一个XSL文件,该XSL文件的内容如下所示:
    <?xml version=′1.0′?> 
    <xsl:stylesheet xmlns:xsl=″http://www.w3.org/TR/WD-xsl″> 
    <xsl:template match=″/″> 
    <html> 
    <body> 
    <table border=″2″> 
    <tr> 
    <td>CPU</td> 
    <td>RAM</td> 
    <td>HardDisk</td> 
    </tr> 
    <xsl:for-each select=″mycomputer/computer″> 
    <tr> 
    <td><xsl:value-of select=″CPU″/></td> 
    <td><xsl:value-of select=″RAM″/></td>
    <td><xsl:value-of select=″HardDisk″/></td>  
    </tr> 
    </xsl:for-each> 
    </table> 
    </body> 
    </html> 
    </xsl:template> 
    </xsl:stylesheet>
    输入完毕后将该文件以“computer.xsl”为文件名保存于“computer.xml”文件同一文件夹下。
    在5.0版本以上的IE浏览器中打开computer.xml文件,显示的效果如(<a href='H:/Data/pic/60090405d.jpg' target=Pic>图</a>)3所示:
    由此可见,XML通过XSL设置的样式,将XML的内容进行转换,并以HTML的方式显示。
    3.XSL模板和元素
    XSL使用一个或多个模板来定义如何输出XML元素,用一个匹配属性将模板与一个XML元素进行连接,还可用匹配属性为XML文件的一个完整分支定义模板。下面是XSLT的常用元素语法。
    (1)xsl:template和xsl:apply-templates元素:
    模板(template)是XSL中很重要的概念。XSL文件由模板组成,一个XSL文件至少包含一个模板,不同的模板控制不同的输出格式。
    模板由匹配模式和执行两部分组成。其中匹配模式部分定义XML源文件中将被模板处理的节点,执行部分定义输出的格式。这二部分对应的语法分别为xsl:template和xsl:apply-templates。
    xsl:template元素的语法如下:
    <xsl:template
    match = pattern
    name = qname
    priority = number
    mode = qname>
    <!-- 执行内容 -->
    </xsl:template>
    xsl:template元素用于定义新模板。其中name、priority和mode属性分别用于区别匹配同一节点的不同模板。match属性用于控制模板的匹配模式,即设置XML源文件中被模板处理的节点。
    如需模板匹配根节点,则可输入以下语句:
    <xsl:template match=″/″> 
    <!-- 文件内容 -->
    </xsl:template> 
    xsl:apply-templates元素的语法如下:
    <xsl:apply-templates
    select = node set-expression
    mode = qname>
    </xsl:apply-templates>
    xsl:apply-templates元素用于设置被模板具体处理的节点。其中select属性用于定义确切的节点名称。xsl:apply-templates总包含在xsl:template元素中。
    (2)xsl:value-of元素:
    xsl:value-of元素的语法如下:
    <xsl:value-of select=nodename/>
    xsl:value-of元素用于将源文件中元素的文本值写至输出文件。其中nodename属性用于设置需输出的元素名称。
    (3)xsl:for-each元素:
    xsl:for-each元素的语法如下:
    <xsl:for-each select=nodename> 
    <!-- 执行内容 -->
    </xsl:for-each>
    xsl:for-each元素用于循环处理被选择的节点。其中nodename属性用于设置需循环处理的元素名称。
    (4)xsl:if元素:
    xsl:if元素的语法如下: 
    <xsl:if test=逻辑表达式> 
    <!-- 执行内容 -->
    </xsl:if>
    xsl:if元素类似程序语言的if条件语句,用于设置当节点满足逻辑条件时才被模板处理。
    (5)xsl:choose、xsl:when和xsl:otherwise元素:
    由于xsl:if元素未提供类似程序语言的“else”语句属性。因此如需对元素进行多项选择,那么可使用xsl:choose、xsl:when和xsl:otherwise元素来实现流程控制。
    xsl:choose元素的语法如下:
    <xsl:choose>
    <!-- 执行内容 -->
    </xsl:choose>
    xsl:choose 元素用于对节点进行选择处理。其中执行内容可包含多个xsl:when元素和一个xsl:otherwise元素。
    xsl:when元素的语法如下:
    <xsl:when test=逻辑表达式> 
    <!-- 执行内容 -->
    </xsl:when> 
    xsl:when 元素用于对节点进行逻辑选择。其中执行内容为对匹配逻辑表达式的节点进行的操作。
    xsl:otherwise元素的语法如下:
    <xsl:otherwise> 
    <!-- 执行内容 -->
    </xsl:otherwise> 
    当xsl:when 元素列举的所有条件均不符合时,将对节点进行由xsl:otherwise元素设置的操作。
    (6)xsl:sort元素:
    xsl:otherwise元素的语法如下:
    <xsl:sort select=nodename/>
    xsl:sort元素用于对XML元素进行排序,其中nodename代表需排序的节点名称。 
    4.动态设置XSL
    为XML文件设置XSL,除可使用静态的“<?xml-stylesheet type=″text/xsl″ href=″xsl文件名″?>”语句外,还可通过脚本语言在客户端和服务端分别进行设置。
    (1)客户端设置XSL:
    如客户端的浏览器支持XML,即可用XSL在浏览器中将文件转换为HTML并输出。较通用的方法可通过JavaScript来实现。在Windows平台下,由于IE5以上的版本提供了XML的解析组件,因此可通过创建XMLDOM对象来为XML动态设置XSL,下面是它的核心代码。
    <script language=″javascript″> 
    //创建XMLDOM对象
    var xmldoc = new ActiveXObject(″Microsoft.XMLDOM″);
    xmldoc.async = false;
    //装载XML文件
    xmldoc.load(″computer.xml″);
    var xsldoc = new ActiveXObject(″Microsoft.XMLDOM″);
    xsldoc.async = false;
    //装载XSL文件
    xsldoc.load(″computer.xsl ″);
    //通过transformNode方法实现动态设置XSL的目的
    document.write(xmldoc.transformNode(xsldoc));
    </script>
    (2)服务端设置XSL:
    由于目前并非所有的浏览器均支持XML和XSL,因此可通过服务器将XML转换为HTML。该代码的核心和客户端相似,使用ASP实现的代码如下:
    <% 
    '创建XMLDOM对象
    set xmldoc = Server.CreateObject(″Microsoft.XMLDOM″)
    xmldoc.async = false
    '装载XML文件
    xmldoc.load(Server.MapPath(″computer.xml″))
    set xsldoc = Server.CreateObject(″Microsoft.XMLDOM″)
    xsldoc.async = false
    '装载XSL文件
    xsldoc.load(Server.MapPath(″computer.xsl″))
    '通过transformNode方法实现动态设置XSL的目的
    Response.Write(xmldoc.transformNode(xsldoc))
    %> 
    四、完整的XML
    1.XML文件约束
    XML的优点在于允许用户自定义体现数据之间逻辑关系的标记,以确保文档具有较强的易读性、清晰性和易检索性。因此完全意义上的XML文档必须遵守文档类型定义(DTD)中已声明的规定。 
    DTD用于描述标记语言的语法和词汇,即定义文档的整体结构及语法。DTD规定了语法分析器为解释有效的XML文件所需获取的所有规则。
    (1)DTD的类型:
    DTD可内嵌在XML文件的前导声明中,也可作为一个外部文档被引用。
    内嵌式DTD:
    内嵌DTD的XML文件结构如下:
    <?xml version = ″1.0″ encoding=″GB2312″ standalone = ″yes″?> 
    <!DOCTYPE 根元素名[ 
    元素描述
    ]> 
    文件内容...
    外部DTD:
    使用外部DTD的XML文件结构如下所述:
     <?xml version = ″1.0″ encoding=″GB2312″ standalone = ″no″?> 
    <!DOCTYPE 根元素名SYSTEM ″外部DTD文件名″> 
    文件内容...
    外部DTD可方便地被多个XML文件共享。
    (2)DTD元素类型声明:
    DTD中使用ETD(Element Type Declaration),即元素类型声明的方法来声明所有有效元素。ETD的语法结构如下:
    <!ELEMENT 元素名 元素内容描述> 
    由XML标准可将元素按内容划分为四类:
    (<a href='H:/Data/pic/60090405e.jpg' target=Pic>图</a>)
    (3)DTD元素属性声明:
    在DTD中也可定义属性,其语法如下:
    <!ATTLIST 元素名 (属性名 属性类型 缺省值)*> 
    其中元素名属性为属性所属的元素名字。属性名为属性的命名。缺省值属性代表属性初值,其可设置的类型如下表所示:
    (<a href='H:/Data/pic/60090405f.jpg' target=Pic>图</a>)
    属性类型用于设置该属性隶属的有效属性类型,有效属性类型如下表所示:
    (<a href='H:/Data/pic/60090405g.jpg' target=Pic>图</a>)
    2.XML Schema
    (1)XML Schema概述:
    作为XML 1.0规范的重要组成部分,DTD对于XML文件的结构可进行详细地描述。但其采用非XML的语法规则、不支持数据类型且扩展性较差。因此诞生了XML Schema,并逐渐配合DTD共同使XML文件结构得到更好的描述。XML Schema的优点如下:
    一致性:XML Schema直接利用XML的基本语法规则来定义文件结构,使XML实现了完美的统一,为XML的进一步发展奠定基础。
    扩展性:XML Schema对DTD进行扩充,引入数据类型和命名空间,使其具备更强的可扩展性。 
    互换性:XML Schema可验证XML文件的合法性,并通过特定的映射机制,将不同的XML Schema进行转换,实现高层次的数据交换。
    规范性:XML Schema提供完整的机制以约束XML标记的使用,利用元素的内容和属性来定义整体结构。
    (2)XML Schema声明语句:
    XML Schema声明语句有二种:
    xmlns=″urn:schemas-microsoft-com:xml-data″:该语句说明文件为一个XML Schema文件。
    xmlns:dt=″urn:schemas-microsoft-com:datatypes″:该语句定义在文件中可使用的数据类型。
    (3)XML Schema语法:
    完整的XML Schema语法涉及的关键元素如下:
    Schema元素:该元素是XML Schema中首个出现的元素,用于声明该XML文件为一个Schema文件。Schema元素具有两个属性,name属性用于设置该Schema的名称;xmlns属性用于设置该Schema包含的命名空间。 
    ElementType元素:该元素定义文件中使用的元素。通过content属性可声明元素是否为空、是否包含文本、是否包含子元素或既包含文本又包含子元素。
    AttributeType元素:该元素定义文件中出现的属性类型。
    group元素:该元素用于将XML 文件中的元素分组。通过order属性可设置分组或子分组中的元素顺序。 
    datatype元素:该元素用于为ElementType和AttributeType指定数据类型。 
    description元素:该元素用于为ElementType和AttributeType元素设置描述信息。
    3.XML命名空间
    为解决自定义标志中出现的“名称冲突”(即不同的实体使用同一标志进行描述)现象,可将不同的实体赋予不同的命名空间,解析器则通过命名空间来区分元素,即XML命名空间。
    XML命名空间采用两段式命名法解决命名冲突问题,即第一段为代表特定命名空间的前缀,第二段为元素或属性原名,两段之间用冒号分隔。
    XML命名空间的定义由命名空间声明、合法名称定义及应用命名空间的作用域三部分组成。
    (1)XML命名空间声明:
    XML命名空间声明通过保留属性“xmlns“实现。命名空间声明包括直接和缺省定义二种方式:
    直接定义方式:xmlns: [命名空间前缀] = [命名空间名]。
    缺省定义方式:xmlns = [命名空间名]。
    (2)合法名称定义:
    合法名称由冒号分隔的前缀和本地部分组成,其中前缀和本地部分必须均为合法的XML名称。 
    (3)命名空间的作用域: 
    命名空间的作用域指命名空间声明可作用的元素和属性。一般命名空间声明可作用至说明其的元素和该元素的所有内容。
    五、XML开发实例
    1.网络开发实例
    (1)将XML文件装载至数据岛:
    在HTML中,可使用数据岛的方式来访问XML文件。在HTML页面内部以数据岛方式装载XML文件的语法如下所示:
    <xml src=″XML文件名″ id=″数据岛名称″ async=″false″> </xml> 
    其中XML文件名属性可为任何符合语法的XML文件,数据岛名称属性为该文件的别名,程序中将通过该别名来访问。async=″false″ 属性可保证在进行其他HTML处理前,装载所有的XML数据。
    (2)将数据岛绑定至HTML表格:
    装载XML数据后即可通过HTML表格的方式显示。将XML数据绑定至HTML表格,只需在表格中增加数据源属性即可,语法如下: 
    <table datasrc=″#数据岛名称″>
    (3)将数据岛绑定至<span>或<div>元素:
    将XML数据绑定至表格后,可通过<span>或<div>元素显示XML数据。只需对页面中的<span>或<div>元素设置数据源属性即可,语法如下: 
    <span datasrc=″#数据岛名称″ datafld=″对应的XML标记″></span>
    <div datasrc=″#数据岛名称″ datafld=″对应的XML标记″></div>
    2.应用程序开发实例
    XML文件的插入、修改或检索等操作均可通过XML解析器及其提供的对象来实现。Microsoft的XML解析器通过msxml.dll动态链接库文件提供,该链接库文件为一COM对象,因此可在Windows下的任何开发语言中使用。以下以VB为例进行介绍。
    在VB中使用msxml.dll提供的COM对象,需在“引用”中添加“Microsoft XML, version 2.0”或更高版本的引用。
    MSXML.DLL提供的主要COM接口如下表所示:
    (<a href='H:/Data/pic/60090405h.jpg' target=Pic>图</a>)
    下面是它的具体使用方法。
    (1)定义对象:
    常用XML接口对象的定义语法如下所示:
    Dim xml As New DOMDocument    '创建DOMDocument对象
    Dim root As IXMLDOMElement    '创建IXMLDOMElement对象
    Dim node As IXMLDOMNode       '创建IXMLDOMNode对象
    (2)文件操作:
    常用的XML文件操作语法如下所述:(使用前述定义的XML接口对象,下同)
    加载XML文件:xml.Load (XML文件名) 
    加载XML数据:xml.Load(XML数据字符串)
    保存XML文件:xml.Save(XML文件名) 
    (3)数据查询:
    可通过DOMDocument对象来实现XML数据的查询,操作语法如下所述:
    查询已知路径的节点:xml.SelectNodes(节点的绝对路径或相对路径) 
    该方法返回NodeList对象,如需返回单个节点可使用SelectSingleNode方法。如未查询出任何节点,则返回Nothing。
    查询已知元素名的节点:由于中间层次的元素名未知,因此可使用“//”符号来代表中间节点,以查询多层次下的其他元素。
    xml.SelectNodes(带“//”符号的节点路径) 
    查询属性节点:在属性名前添加“@”符号即可返回属性节点。
    xml.SelectNodes(带“@”符号的节点路径) 
    查询Text节点:使用“text()”关键字即可获取Text节点。
    xml.SelectSingleNode(带“text()”关键字的节点路径) 
    查询特定条件节点:使用“[]”符号即可查询特定条件的节点。 
    xml.SelectSingleNode(带“[]”符号的节点表达式) 
    查询多重模式节点:使用“|”符号即可获取多重模式节点。 
    xml.SelectNodes(带“|”符号的节点路径) 
    查询任意子节点:使用“*”符号即可获取当前节点的所有子节点。
    xml.SelectNodes(带“*”符号的节点路径)


--  作者:xiaoye
--  发布时间:2005-5-20 22:47:00

--  
P.S来自电脑报
XML基础与实战应用教程 本文还有配套的精品资源,点击获取 简介:XML是一种用于标记和传输数据的语言,它具有自描述性和清晰的数据结构。本教程详细介绍了XML的基本概念、语法、解析技术,以及它在数据转换、验证和Web服务中的实际应用。通过本教程,学生可以学习到如何设计和解析XML文档,并掌握XML在企业级应用和移动开发中的配置用途。 1. XML基本概念和语法 XML(Extensi... 阅读详情

相关推荐

Apache Digester解析XML文档的实用教程

Apache Digester 是一个强大的开源库,它极大地简化了将 XML 文档转换为 Java 对象的过程。Digester 通过定义一系列的解析规则来实现这一过程,这些规则描述了 XML 元素与 Java 对象属性之间的映射关系。开发人员可以轻松地将 XML 文件中的数据填充到 Java 对象的字段中,极大地减少了编写解析代码的工作量。本章将带领读者认识 Digester 的核心组件,并探讨其在数据处理中的优势。

weixin_35734408的博客 882

扩展标记语言-XML

XML 指可扩展标记语言(eXtensible Markup Language)。 XML 被设计用来传输和存储数据。 XML 很重要,也很容易学习。 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: XML 简介 XML 被设计用来传输和存储数据。 HTML 被设计用来显示数据。 。。。。。。。。。。。。。 ...

qq_42671834的博客 1410

XML编辑器实用教程:中文版的高效XML开发工具

XML(Extensible Markup Language)即可扩展标记语言,是一种标记语言,用于存储和传输数据。其重点在于“可扩展性”,开发者可以根据需要定义自己的标签,为文档增加结构。它不像HTML那样有固定的标签集,而是允许用户自定义元素。由于其开放性和灵活性,XML广泛应用于数据交换、系统配置和内容管理等领域。XML编辑器是一种专业的文本编辑工具,它为用户提供了编写、查看、修改和管理XML文档的界面。与普通的文本编辑器相比,XML编辑器专门针对XML文件的结构化特点,提供了更为强大的支持。

weixin_32306683的博客 1054

XML简要教程(适合初学者)

XML简要教程XML 指可扩展标记语言(eXtensible Markup Language), 被设计用来传输和存储数据。是各种应用程序之间进行数据传输的最常用的工具。XML提供了一套夸平台,跨网络,跨应用程序的语言的描述方式。使用XML可以方便的实现数据交换,系统配置,内容管理等。XML 可被类似记事本这样的简单的文本编辑器来创建和编辑。不过,在您开始使用 XML 进行工作时,您很快会发现...

cnds123的专栏 2万+

Vivado与Vscode无缝集成:高效Verilog开发环境搭建指南

本文详细介绍了如何将Vivado与Vscode无缝集成,打造高效的Verilog开发环境。通过替换Vivado默认编辑器为Vscode,配置必备插件和语法检查工具,开发者可以大幅提升FPGA项目的编码效率。文章还提供了代码片段、Testbench自动生成等高级技巧,帮助开发者快速上手这一集成方案。

weixin_33737774的博客 493

5分钟搞懂MSDNet:用Transformer实现小样本语义分割的保姆级教程

本文详细介绍了MSDNet(Multi-Scale Decoder Network)如何利用Transformer架构实现小样本语义分割。通过多尺度解码器和空间Transformer解码器,MSDNet能够在仅有1-5张标注图像的情况下完成精确分割任务。文章提供了PyTorch代码实例和优化技巧,帮助开发者快速掌握这一前沿技术。

weixin_30832143的博客 506

XML入门教程(XML这样学)

前言:“与其每天担心未来,不如努力现在。别对自己丧失信心,成长的路上,只有奋斗才能给你最大的安全感。” 你好,我是梦阳辰!下面和我一起学习XML吧! 01.XML概述 1.什么是XML? XML (eXtensible Markup Language)指可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。 XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据.

轻松玩编程 1553

C300 | 5680t | 新格林| AN5516 | 远程ONU升级指导

ONU的远程管理升级 1、ZTE C300 OLT : 1.1 环境拓扑: PC1(filezilla server)------(uplink_default-vlanID)OLT---------ONU | | mng1 1.2 配置部署: 1):PC1(filezilla server): IP:192.168.88.252 255.255.255.0 配置FTP-Server的用户名:gp...

Shelly的博客 3770

【XML】《XML实用教程》笔记

XML是eXtensible Markup Language的缩写,称之为可扩展标记语言。 符合W3C制定的基本语法规则的XML文件称为规范的XML文件,规范的XML文件如果再符合额外的一些约束就称之为有效的XML文件。 一个规范的XML文件应当满足如下语法规则: ● XML文件用“XML声明”开始。 ● XML文件有且仅有一个根标记 ● XML的非根标记都必须封装在根...

weixin_30278237的博客 138

企业微信API实战:解密external_userid的跨应用一致性管理

本文深入探讨企业微信API中external_userid的跨应用一致性管理问题,解析其本质及在不同应用场景下的ID不一致挑战。通过ID转换与统一管理方案,结合unionid实现跨应用客户数据整合,提供实战代码示例和架构设计,助力企业构建高效的客户管理系统。

weixin_29258297的博客 637

Mac安装Typescript报错

根本原因是系统级目录的权限限制。推荐通过修改目录权限或使用nvm彻底解决问题。

江拥羡橙的博客 210

C#实用教程-操作xml文件

C#实用教程-操作xml文件C#实用教程-操作xml文件引言:什么是xml文件Xml的特征Xml的格式与HTML的区别对Xml进行操作读取xml文件:当前xml文件内容如下:创建xml文件,并添加元素创建的xml文件内容如下:对xml文件内容进行增删改查等操作:更新对Xml文件进行更新修改(添加了对xml读写修改的方法)写在最后 C#实用教程-操作xml文件 引言:什么是xml文件 可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。 在电子计算机中,标记指计

weixin_45488532的博客 2143

【Claude Code】Extra inputs are not permitted 报错:代理网关剥离 Beta 标头的修复

通过代理或 LLM 网关连接 Anthropic API 时,Claude Code 报 "Extra inputs are not permitted"?根因是中间件删除了 anthropic-beta 请求标头,导致 Beta 字段被 API 拒绝。本文详解标头转发配置和 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 回退方案。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 125

Mybatis实用教程之XML实现动态sql

Mybatis实用教程之XML实现动态sql

小张的博客 2351

GVINS数据采集(u-blox fp9 + D435i)

1、配置千寻的RTK账号 采集数据当天购买千寻的RTK账号,然后在Window下,输入账号和密码 (具体的步骤如之前面连接所示),查看u-center软件上的信息,确保接收机可以收到RTK信息; 2、查看Linux系统下u-blox是否可以正常接受GPS信号和RTK数据流 1、GPS信号信息 // 打开端口 1 cd ublox_f9p/src // 或者在终端1下也可以 source devel/setup.bash r.....................

努力努力努力 2609

【项目实战】TARA威胁分析和风险评估

TARA是信息安全领域中的一种风险评估方法,在汽车信息安全的上下文中,TARA分析特别重要,因为它可以帮助识别和管理与智能网联车辆相关的各种威胁,包括数据泄露、未经授权的访问、远程操控等。通过TARA分析,企业可以制定出针对性的安全目标、产品要求和产品安全声明,以确保汽车及其零部件符合相关的信息安全标准和法规。此外,TARA分析还可以与数字化建模系统结合,以更系统化和高效的方式进行风险评估和管理。

奶爸的编程之路,也就一周冷个三天 2712

C# XML

一、XML概念 XML:可扩展的标记语言,它用于存储数据。 注意: (1)XML是严格区分大小写的; (2)XML标签都是成对出现的; (3)XML文档只能有一个根节点。 二、创建XML文件 using System; using System.Xml;//引用命名空间 namespace XML { class Program { //通过代码来创建XML文档 static void Main(string[] args)

qq_41603955的博客 7249

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用XML复制编辑器进行XML操作

XML文档格式创建于1996年,至今仍被广泛用于促进异构系统之间的通信(尽管对于某些实现而言,JSON已被某些形式所取代)。 作为Java开发人员,我通常通过DOM解析器与XML文档中的数据进行交互,但是在某些情况下,能够直接操作XML文档是有利的,甚至是必要的。 在不太可能的情况下,如果所讨论的文档特别小,但通常这些文档可能很大,则可以使用简单的文本编辑器来实现。 因此,能够在专门为该...

danpu0978的博客 776

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ios如何解析html xml文件,iOS使用GDataXML-HTML生成XML

iOS版本系统自带的XML类只能进行解析,无法生成XML。开源库GDataXML-HTML不仅支持XML解析,还支持生成XML。1. 添加GDataXML-HTML到项目中。笔者使用的项目都使用Cocoapods托管,不熟悉Cocoapods可以参考《Cocoapods的安装和使用》在Podfile文件中添加pod 'GDataXML-HTML', '~> 1.1.0'执行以下命令进行添加库...

weixin_34137975的博客 302

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

php操作xml类,PHP XML操作类DOMDocument

不得不自已写一个.XML的操作一直没有用过.下面是自己搜集的XML操作类DOMDocument相关的内容.属性:Attributes 存储节点的属性列表(只读)childNodes存储节点的子节点列表(只读)dataType 返回此节点的数据类型Definition 以DTD或XML模式给出的节点的定义(只读)Doctype 指定文档类型节点(只读)documentElement 返回文档的根元素...

weixin_33364925的博客 192

了解女友的心还不如了解Python之在Python中解析和修改XML

2021年12月15日 10:14 ·阅读 30 摘要: 工作中我们时常需要解析用不同语言编写的数据。Python 提供了许多库来解析或拆分用其他语言编写的数据。在这篇 Python XML 解析器教程的文章中,你可以学习怎么样通过 Python 解析 XML。 工作中我们时常需要解析用不同语言编写的数据。Python 提供了许多库来解析或拆分用其他语言编写的数据。在这篇 Python XML 解析器教程的文章中,你可以学习怎么样通过 Python 解析 XML。 以下是本教程中涵...

weixin_54556126的博客 214

【python xml读写】

Python:xml读写(xml.etree.ElementTree模块使用) Python xml属性/节点/文本的增删改[xml.etree.ElementTree]

Watson的博客 260

java xml dom4j 解析_在JAVA中怎么用DOM和DOM4j解析XML啊?

二、XML文件三、开始解析public class JDOMTest {public static void main(String[] args) {// 进行对books.xml文件的JDOM解析// 准备工作// 1.创建一个SAXBuilder的对象SAXBuilder builder = new SAXBuilder();try {// 2.创建一个输入流,将xml文件加载到输入流中In...

weixin_42361733的博客 112

c# 操作xml文件,添加、删除节点

/// &lt;summary&gt; /// 删除当前选择节点 /// &lt;/summary&gt; /// &lt;param name="sender"&gt;&lt;/param&gt; /// &lt;param name="e"&gt;&lt;/param&gt; private

weixin_43025177的博客 3236
上一篇: :[求助]Tomcat 5.5.10 Server无法启动服务
下一篇: 2006-我的年记
jxcjxinxing
博客等级 码龄20年 51粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值