Javascript里使用Dom操作Xml
一.本筆記使用的Xml文件
二.IXMLDOMDocument/DOMDocument簡介???
2.1 屬性
2.1.1 ?parseError
2.1.2 ?async.
2.1.3 ?xml
2.1.4 ?text 3
?
???????????????? 2.1.5 ?attributes2.1.6 ?nodeName
2.1.7 ?documentElement
2.1.8 ?nextSibling
2.1.9 ?childNodes
2.1.10 ?firstChild
2.1.11 ?lashChild
2.2 方法
2.2.1 ?loadXML
2.2.2? load
2.2.3 ?selectSingleNode
2.2.4 ?selectNodes
2.2.5 ?getElementsByTagName
2.2.6 ?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下實(shí)現(xiàn)代碼:
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簡介
?
2.1 屬性
?
2.1.1 ?parseError
?
Returns an IXMLDOMParseError object that contains information about the last parsing error
返回解析錯誤時的一個對象。
重要的有parseError.errorCode,parseError.reason
如果load時路徑不對,會返回“系統(tǒng)未找到指定的對象”的錯誤
2.1.2 ?async
?
Specifies whether asynchronous download is permitted
是否允許異步下載,布爾值
?
?
2.1.3 ?xml
?
Contains the XML representation of the node and all its descendants. Read-only.
該點(diǎn)及下面派生的所有點(diǎn)的全部信息,只讀如果要求book點(diǎn)的xml,返回“<book level="1"><Name>c++</Name><Price>20</Price><info><k>1</k></info><info><k>2</k></info></book>”,如果Name的xml,返回“<Name>c++</Name>”
2.1.4 ?text
?
Represents the text content of the node or the concatenated text representing the node and its descendants. Read/write
該點(diǎn)及下面派生的所有點(diǎn)的全部節(jié)點(diǎn)值,可讀可寫
<price>20</price>
則text為20
"Name"節(jié)點(diǎn)的text為"c++"
2.1.5 ?attributes
?
Contains the list of attributes for this node
返回屬性的集合。
2.1.6 ?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
該節(jié)點(diǎn)名稱
"Name"節(jié)點(diǎn)的nodeName為"Name","book"節(jié)點(diǎn)的nodeName為"book"
2.1.7 ?documentElement
?
Contains the root element of the document
xml的根節(jié)點(diǎn)
上面的xml的根節(jié)點(diǎn)為"book"
2.1.8 ?nextSibling
?
Contains the next sibling of the node in the parent's child list. Read-only.
下一個兄弟節(jié)點(diǎn),只讀
2.1.9 ?childNodes
?
Contains a node list containing the child nodes
所有的子節(jié)點(diǎn)。
2.1.10 ?firstChild
?
Contains the first child of the node
第一個子節(jié)點(diǎn)
2.1.11 ?lastChild
?
Returns the last child node
最后一個子節(jié)點(diǎn)
?
?
2.2 方法
?
2.2.1 ?loadXML
?
Loads an XML document using the supplied string
2.2.2? load
?
Loads an XML document from the specified locati
參數(shù)的路徑為服務(wù)器端的,是相對路徑
2.2.3 ?selectSingleNode
?
Applies the specified pattern-matching operation to this node's context and returns the first matching node
返回第一個匹配的項(xiàng)
2.2.4 ?selectNodes
?
Applies the specified pattern-matching operation to this node's context and returns the list of matching nodes as IXMLDOMNodeList
符合條件的所有項(xiàng)。
2.2.5 ?getElementsByTagName
?
Returns a collection of elements that have the specified name
返回與元素名匹配的一個node的集合
2.2.6 ?hasChildNodes
?
Provides a fast way to determine whether a node has children
判斷是否含有子節(jié)點(diǎn)
返回值為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;?? //根節(jié)點(diǎn)
Form1.test1.value = root.xml;
/*結(jié)果如下:
<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;? //結(jié)果為"book"
var att = root.attributes;? //得到該點(diǎn)下所有屬性的集合
var str = "";
for (var i=0; i<att.length; i++)
{
str += att.item(i).nodeName+":"+att.item(i).text;
}
Form1.test1.value = str;? //只有一個屬性,所以結(jié)果為“level:1”
var fNode;
var lNode;
var nextSibling;
fNode = root.firstChild;?? //第一個子節(jié)點(diǎn)Name
lNode = root.lastChild;??? //最后一個子節(jié)點(diǎn) info
nextSibling = fNode.nextSibling;? //第一個子節(jié)點(diǎn)Name的后一個兄弟節(jié)點(diǎn),即Price
str = fNode.nodeName + ":" + fNode.text;? //結(jié)果:"Name:c++"
str = lNode.nodeName + ":" + lNode.text;? //結(jié)果為:"info:2"
str = nextSibling.nodeName + ":"? + nextSibling.text;? //結(jié)果為:"Price:20"
var nodeList;
str = "";
nodeList = xmlDoc.selectNodes("//info");? //查找元素名為"info"的節(jié)點(diǎn)
for (var j=0; j<nodeList.length; j++)? //有兩個info節(jié)點(diǎn)
{
var infoNode = nodeList.item(j);
var cldNodes = infoNode.childNodes;? //info節(jié)點(diǎn)的子節(jié)點(diǎn)集
for (var k=0; k<cldNodes.length; k++)
{
?????? str += cldNodes.item(k).nodeName + ":" + cldNodes.item(k).text + " ";
}
//結(jié)果“k:1 k:2 ”
}
str = "";
var sNode;
sNode = xmlDoc.selectSingleNode("//info"); //找到第一個和"info"匹配的
var scldNodes = sNode.childNodes;? //info節(jié)點(diǎn)的子節(jié)點(diǎn)集
for (var t=0; t<scldNodes.length; t++)
{
str += scldNodes.item(t).nodeName + ":" + scldNodes.item(t).text + " ";
}
//結(jié)果“k:1”
Form1.test1.value = str;
轉(zhuǎn)載于:https://www.cnblogs.com/goody9807/archive/2006/06/12/424031.html
總結(jié)
以上是生活随笔為你收集整理的Javascript里使用Dom操作Xml的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统学习笔记-05-中断和异常
- 下一篇: [导入]Visual Studio 20