• Javascript里使用Dom操作Xml


    一.本笔记使用的Xml文件

    二.IXMLDOMDocument/DOMDocument简介   

    21 属性

    211  parseError

    212  async.

    213  xml

    214  text 3

                      215  attributes

    216  nodeName

    217  documentElement

    218  nextSibling

    219  childNodes

    2110  firstChild

    2111  lashChild

    22 方法

    221  loadXML

    222  load

    223  selectSingleNode

    224  selectNodes

    225  getElementsByTagName

    226  hasChildNodes

    三.例子


    一.本笔记使用的Xml文件

    <?xml version="1.0"?>

    <book level="1">

     

      <Name>c++</Name>

     

      <Price>20</Price>

     

     <info>

    <k>1</k>

      </info>

      <info>

        <k>2</k>

     

      </info>

     

    </book>

     

     asp.net下实现代码:

    string str = Server.MapPath("test1.xml");

     

    XmlTextWriter xmlWriter = new XmlTextWriter(str,null);

     

    xmlWriter.Formatting = System.Xml.Formatting.Indented;

     

    xmlWriter.WriteStartDocument();

     

    xmlWriter.WriteStartElement("book");

     

    xmlWriter.WriteAttributeString("level","1");

     

    xmlWriter.WriteElementString("Name","c++");

     

     xmlWriter.WriteElementString("Price","20");

     xmlWriter.WriteStartElement("info");

    xmlWriter.WriteElementString("k","1");

     

     xmlWriter.WriteEndElement();

    xmlWriter.WriteStartElement("info");

     

    xmlWriter.WriteElementString("k","2");

      

    xmlWriter.WriteEndElement();

      

    xmlWriter.WriteEndElement();

      

    xmlWriter.WriteEndDocument();

     

     xmlWriter.Close();

      

    二.IXMLDOMDocument/DOMDocument简介

    21 属性

    211  parseError

    Returns an IXMLDOMParseError object that contains information about the last parsing error

    返回解析错误时的一个对象。

    重要的有parseError.errorCode,parseError.reason

    如果load时路径不对,会返回“系统未找到指定的对象”的错误

    212  async

    Specifies whether asynchronous download is permitted

    是否允许异步下载,布尔值

     

    213  xml

    Contains the XML representation of the node and all its descendants. Read-only.

    该点及下面派生的所有点的全部信息,只读如果要求book点的xml,返回“<book level="1"><Name>c++</Name><Price>20</Price><info><k>1</k></info><info><k>2</k></info></book>”,如果Namexml,返回“<Name>c++</Name>

    214  text

    Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write

    该点及下面派生的所有点的全部节点值,可读可写

    <price>20</price>

    text20

    "Name"节点的text"c++"

    215  attributes

    Contains the list of attributes for this node

    返回属性的集合。

    216  nodeName

    Returns the qualified name for attribute, document type, element, entity, or notation nodes. Returns a fixed string for all

    other node types. Read-only

    该节点名称

    "Name"节点的nodeName"Name","book"节点的nodeName"book"

    217  documentElement

    Contains the root element of the document

    xml的根节点

    上面的xml的根节点为"book"

    218  nextSibling

    Contains the next sibling of the node in the parent's child list. Read-only.

    下一个兄弟节点,只读

    219  childNodes

    Contains a node list containing the child nodes

    所有的子节点。

    2110  firstChild

    Contains the first child of the node

    第一个子节点

    2111  lastChild

    Returns the last child node

    最后一个子节点

     

    22 方法

    221  loadXML

    Loads an XML document using the supplied string

    222  load

    Loads an XML document from the specified locati

    参数的路径为服务器端的,是相对路径

    223  selectSingleNode

    Applies the specified pattern-matching operation to this node's context and returns the first matching node

    返回第一个匹配的项

    224  selectNodes

    Applies the specified pattern-matching operation to this node's context and returns the list of matching nodes as IXMLDOMNodeList

    符合条件的所有项。

    225  getElementsByTagName

    Returns a collection of elements that have the specified name

    返回与元素名匹配的一个node的集合

    226  hasChildNodes

    Provides a fast way to determine whether a node has children

    判断是否含有子节点

    返回值为bool

     

    三.例子

    var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");

    xmlDoc.async = false;

    xmlDoc.load("test\\test1.xml");

    if (xmlDoc.parseError.errorCode!=0)

    {

    var error = xmlDoc.parseError;

      alert(error.reason)

    return;

    }

    var root = xmlDoc.documentElement;   //根节点

    Form1.test1.value = root.xml;

    /*结果如下:

    <book level="1"><Name>c++</Name><Price>20</Price><info><k>1</k></info><info><k>2</k></info></book>*/

    Form1.test1.value = root.nodeName;  //结果为"book"

    var att = root.attributes;  //得到该点下所有属性的集合

    var str = "";

    for (var i=0; i<att.length; i++)

    {

    str += att.item(i).nodeName+":"+att.item(i).text;

    }

    Form1.test1.value = str;  //只有一个属性,所以结果为“level1

    var fNode;

    var lNode;

    var nextSibling;

    fNode = root.firstChild;   //第一个子节点Name

    lNode = root.lastChild;    //最后一个子节点 info

    nextSibling = fNode.nextSibling;  //第一个子节点Name的后一个兄弟节点,即Price

    str = fNode.nodeName + ":" + fNode.text;  //结果:"Name:c++"

    str = lNode.nodeName + ":" + lNode.text;  //结果为:"info:2"

    str = nextSibling.nodeName + ":"  + nextSibling.text;  //结果为:"Price:20"

    var nodeList;

    str = "";

    nodeList = xmlDoc.selectNodes("//info");  //查找元素名为"info"的节点

    for (var j=0; j<nodeList.length; j++)  //有两个info节点

    {

    var infoNode = nodeList.item(j);

    var cldNodes = infoNode.childNodes;  //info节点的子节点集

    for (var k=0; k<cldNodes.length; k++)

    {

           str += cldNodes.item(k).nodeName + ":" + cldNodes.item(k).text + " ";

    }

    //结果“k:1 k:2

    }

    str = "";

    var sNode;

    sNode = xmlDoc.selectSingleNode("//info"); //找到第一个和"info"匹配的

    var scldNodes = sNode.childNodes;  //info节点的子节点集

    for (var t=0; t<scldNodes.length; t++)

    {

    str += scldNodes.item(t).nodeName + ":" + scldNodes.item(t).text + " ";

    }

    //结果“k:1

    Form1.test1.value = str;

  • 相关阅读:
    在MYSQL中插入当前时间,就象SQLSERVER的GETDATE()一样,以及对mysql中的时间日期操作。
    mysql使用default来设置字段的默认值
    MySQL关于check约束无效的解决办法
    C# 加密算法汇总
    REST,Web 服务,REST-ful 服务
    C# HTML 生成 PDF
    SQL Server Connection Pooling (ADO.NET)
    ADO.NET Connection Pooling at a Glance
    正则表达式
    开发 ASP.NET vNext 初步总结(使用Visual Studio 2015 Preview )
  • 原文地址:https://www.cnblogs.com/goody9807/p/424031.html
Copyright © 2020-2023  润新知