• XML基础知识


    1.XML基础
    2.XML语法
    3.XML DOM
    4.Javascript解析XML文档


    1.XML基础
    eXtensible Markup Language 可扩展标记语言
    XML是一种平台无关的用于携带和传送数据的方法。

    ~~~~xml主要是描述数据是什么,一般没有数据如何呈现的信息,有别于HTML,HTML可以说是xml的一种实现。(注:xhtml才是xml的一种实现)

    xml文档可以用IE 文本编辑器或者专门的XML编辑器浏览

    ~~~xml不同平台的数据交换,但不适合大批量数据的存储与处理(有别于数据库)

    多个xml文档的元素之间还可以定义主外键关系

    xml优点:
    ~~~通用性,可扩展性,自我描述性

    xml的用途
    ~~作为一种通用的数据格式,存储和交换数据;用作配置文件


    2.XML语法

    XML文档声明
    XML处理指令
    XML元素(元素 元素属性 元素内容)

    <?xml version="1.0" encoding="utf-8" ?>  <!--xml文档声明-->
    <?xml-stylesheet type="text/xsl" href="mystyle.xsl" ?><!--xml处理指令 可选-->
    <stu-roster> <!--xml元素-->
      <student>
        <id>A001</id>
        <name>dingdang</name>
      </student>
      <student>
         <id>A009</id>
         <name>kitty</name>
      <student>
    </stu-roster>

    ~~~XML文档声明 必须包含version属性,其他属性如下 顺序不能打乱。
    <?xml version="1.0" encoding="utf-8" standalone="yes" ?>

    XML处理指令
    为处理XML文档的应用程序提供提示信息
    XML解析器会把处理指令原封不动的传给处理程序,由处理应用程序按照指令的提示信息进行处理

    使用格式显示XML文档
    用CSS定义外观样式或者用XSL定义外观 Xml Stylesheet Language 后者功能更强大

    XML元素: 起始标识 结束标记 属性 内容
    <title>雾都孤儿</title>

    XML所有元素都必须有结束标记。

    标签名区分大小写,开始标签和结束标签要匹配

    元素内容:
    元素包含子元素
    元素直接包含内容
    元素没有任何内容  空标记

    根元素:没有嵌套在其他元素内的元素 最高层元素
    文档内所有元素都是根元素的子孙元素。
    根元素要有且仅有一个

    元素内容
    CDATA Character DATA 字符数据
    指定不想被解析程序解析的一片原始数据区。

    PCDATA Parsed Character DATA 由XML解析器解析的字符数据

    CDATA例子:
    <![CDATA[...anything can go here...]]>
    CDATA区内不能出现字符"]]>"
    可以在CDATA区内嵌入其他语言的代码,如javascript等。

    PCDATA区 PCDATA 需要被XML解析器解析的字符数据
    直接写在起始标记和结束标记之间的内容。

    字符转义
    有些特殊字符不能出现在PCDATA区内,需要用字符实体替代,如 < &等
    &lt <
    &gt >
    &amp & ampersand
    &apo ' apostrophe
    &quot "

    XML注释 同HTML <!-- comment -->

    xml文档声明必须是第一行代码,注释不能放在XML文档声明之前。

    3.XML DOM

    DOM 是所有浏览器都支持的一种标准,它定义了一组与浏览器和编程语言都无关的标准对象,利用这些对象模型可以方便地操作XML文档

    DOM是最为流行的XML文档访问方式。

    DOM的优缺点:一般使用DOM时,把所有XML文档信息都存放在内存,遍历容易,但是内存占用高,解析较慢

    DOM树形结构 XML文档的每个成分都看作是一个节点。

    节点类型:
    Document  根节点 9
    DocumentType  DTD引用的对象的表现形式 10
    Element 元素节点 1
    Attr 属性节点 2
    Text 文本节点 3
    CDataSection 字符数据节点 4
    Comment 注释节点 8

    DOM树形结构中,节点间的关系:parent child sibling

    4.javascript解析XML文档
    XML DOM的属性和方法
    javascript操纵XML DOM

    现在大多数的浏览器都支持XML

    IE和Mozilla的浏览器都通过javascript提供对XML的支持

    javascript处理XML文档的基础是DOM树形结构
    在javascript中有关于DOM的API,在这些API中定义了DOM的属性和方法。
    利用javascript中的DOM API可以实现对XML文档的访问、创建、删除,修改等操作。
    用javascript处理XML文档是ajax技术的核心

    javascript处理XML文档的工作原理:
    1.创建XML DOM对象
    2.载入XML文档的内容
    3.调用javascript关于XML DOM的属性和方法进行处理。

    创建XML DOM对象 IE和非IE浏览器创建方法不同
    IE用ActiveX插件中的 MSXML库实现对XML的支持
    var xmlDom=new ActiveXObject(aVersion);
    aVersion的取值可以是 Microsoft.XMLDOM
    MSXML2.DOMDocument
    MSXML2.DOMDocument3.0
    MSXML2.DOMDocument4.0
    MSXML2.DOMDocument5.0
    MSXML2.DOMDocument6.0

    如:
    var xmlDom=new ActiveXObject("MSXML2.DOMDocument6.0");

    IE支持2中载入XML文档的方法:load()和loadXML()
    var xmlDoc=xmlDom.load(url); //默认采用异步的方式载入XML文档数据

    //同步方式载入XML文档数据
    xmlDom.async=false;
    var xmlDoc=xmlDom.load(url);

    var xmlDoc=xmlDom.loadXML(sXml); //sXML为XML格式的字符串


    Firefox下获得XML DOM对象
    在Firefox浏览器中需要调用document.inplementation对象的createDocument()方法创建一个XML DOM对象。
    var xmlDom=document.inplementation.createDocument("","",null);

    Firefox浏览器只支持load()方法载入XML文档。
    var xmlDoc=xmlDOM.load("test.xml");

    获取XML DOM对象--跨浏览器兼容的方法,使用zXML库实现跨浏览器对XML的支持。

    var xmlDom=zXMLDom.createDocument();

    zXML支持2中方法载入XML文档,同IE. xmlDom.load(),xmlDom.loadXML();


    >>>>操作XML文档<<<<<
    节点的属性:
    nodeType
    nodeName
    nodeValue
    attributes  元素节点的属性

    节点导航
    firstChild
    lastChild
    childNodes
    previousSibling 前一个兄弟节点
    nextSibling 下一个兄弟节点

    documentElement 指向XML文档的根节点,只有Document对象有该属性。Document.documentElement
    owerDocument  指向这个节点所属文档。

    XML DOM的方法:
    创建节点:
    createElement(tagName)  创建标签名为tagName的元素。
    createTexNode(text)  创建文本节点
    createAttribute(attrname)  创建一个属性节点 属性未赋值

    createDocumentFragment() 创建文档碎片节点
    createProcessingInstruction(target,data);

    读取节点:
    getElementByTagName(tagname)  //返回标签名为tagname的nodelist
    getAttribute(attrname)  //获取当前节点中 属性名为attrname的属性值

    setAttribute(attrname,attrvalue) 设置属性节点的值
    setAttributeNode(attrNode) 某节点属性节点列表的尾部添加一个属性节点。

    添加删除节点的方法:
    appendChild(node);
    removeChild(node)
    replaceChild(newNode,oldNode)
    insertBefore(newNode,oldNode);

  • 相关阅读:
    mysql "ON DUPLICATE KEY UPDATE" 语法
    HTTP协议中PUT和POST使用区别
    layui 表单渲染失败
    golang 一行代码 把array/slice转成逗号分隔的字符串
    关于layui、table数据表格请求异常回调函数
    关于layui表单中按钮自动提交的解决方法
    使用 socket.io 报错 Error during WebSocket handshake: Unexpected response code: 400
    解决MySQL报错:[Err] 1055
    jetbrains 修改 http proxy 更换代理
    layui layuiadmin layui.data 数据操作
  • 原文地址:https://www.cnblogs.com/stephenykk/p/3901592.html
Copyright © 2020-2023  润新知