Javascript里使用Dom操作Xml

有何不好 · 发布于 2017-01-11 · 字数6770 · 浏览 837 · 评论 0

一.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 attributes
2.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下实现代码:
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时路径不对,会返回“系统未找到指定的对象”的错误
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.
该点及下面派生的所有点的全部信息,只读如果要求book点的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
该点及下面派生的所有点的全部节点值,可读可写
<price>20</price>
则text为20
“Name”节点的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
该节点名称
“Name”节点的nodeName为”Name”,”book”节点的nodeName为”book”
2.1.7 documentElement
Contains the root element of the document
xml的根节点
上面的xml的根节点为”book”
2.1.8 nextSibling
Contains the next sibling of the node in the parent’s child list. Read-only.
下一个兄弟节点,只读
2.1.9 childNodes
Contains a node list containing the child nodes
所有的子节点。
2.1.10 firstChild
Contains the first child of the node
第一个子节点
2.1.11 lastChild
Returns the last child node
最后一个子节点
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
参数的路径为服务器端的,是相对路径
2.2.3 selectSingleNode
Applies the specified pattern-matching operation to this node’s context and returns the first matching node
返回第一个匹配的项
2.2.4 selectNodes
Applies the specified pattern-matching operation to this node’s context and returns the list of matching nodes as IXMLDOMNodeList
符合条件的所有项。
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
判断是否含有子节点
返回值为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; //只有一个属性,所以结果为“level:1”
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;

本文系作者 有何不好 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2015-03-06纯HTML5制作图片放大效果
  • 2017-01-19用JavaScript实现给出的盒子的序列是否可连为一矩型
  • 2016-12-02FlyJSONP轻量级的跨域AJAX请求插件
  • 2016-12-02Response JS创建高性能的支持移动设备的网站
  • 2016-05-16有帮助!值得一看!网页设计中的“点、线、面”
  • 2016-05-17精选!动态设计创新方法及流程总结
  • 2016-05-17[PS教程] 5分钟就能快速绘制大气磅礴的水墨字效果
  • 2016-06-11Tinycon浏览器的网站图标上显示冒泡的数字
  • 发布评论

    为您推荐

    问说网 · 发布于 2015-02-15

    我为什么选择C而不是C++及其它语言

    因为它跟硬件和汇编相对接近最近,可以向后发展,而其它语言只能向后发展却不能向前发展。。即使是在冯氏结构过时之后,C 语言的地位也是最好的。嵌入式就说明了这个道理…

    用JavaScript实现给出的盒子的序列是否可连为一矩型
    AustenJuliet · 发布于 2017-01-19

    用JavaScript实现给出的盒子的序列是否可连为一矩型

    by cpglkg <script>var arr=[5,10,15];function rect(arr,width){ arr.sort(fun…

    问说网 · 发布于 2016-12-02

    FlyJSONP轻量级的跨域AJAX请求插件

    FlyJSONP是一个JavaScript库,用于实现跨域GET和POST请求服务,支持JSONP,并取得一个JSON格式的数据响应,这个Library具有易于…

    好文必须推荐!如何搞定界面设计之构图篇

    想成为一个合格的UI设计师,光会画图标可不行,今天@Micu设计小哥从头帮你补上版式这一课,分享他的界面构图三板斧,此外,你还能学会如何用设计语言解构画面,这可…

    • 好文必须推荐!如何搞定界面设计之构图篇
    • 好文必须推荐!如何搞定界面设计之构图篇
    • 好文必须推荐!如何搞定界面设计之构图篇
    • 好文必须推荐!如何搞定界面设计之构图篇
    RichardsonTess · 发布于 2016-05-16 · 浏览 1085 · 评论 0

    启发很大!学会这些创意手法让设计耳目一新

    随着新媒体和互联网的发展,创意的表现形式也变得新颖有效,但创意的本质不变:1 创意不是文字或画面。在观点或意念上创新,永远优于在视觉或文字上琢磨。2 视觉和文字…

    • 启发很大!学会这些创意手法让设计耳目一新
    • 启发很大!学会这些创意手法让设计耳目一新
    • 启发很大!学会这些创意手法让设计耳目一新
    • 启发很大!学会这些创意手法让设计耳目一新
    五鬼白骨锤 · 发布于 2016-05-17 · 浏览 1128 · 评论 0
    问说网 · 发布于 2016-06-12

    jQuery NailThumb高分辨率缩略图显示插件

    jQuery NailThumb 可让你轻松创建高分辨率图像的无损缩略图,只需一行代码搞定。你可以通过 CSS 来设定缩略图的尺寸,jQuery NailThu…

    问说网 · 发布于 2016-06-24

    Gridpak响应式轻量级Web开发框架

    Gridpak 的目的是实现了响应式的 Web 页面设计,提高工作流程,节省了时间。通过生成PNG图像,CSS和JavaScript,让 Gridpak 创建响…

    jQuery Scroll Path按路径元素滚动动画插件
    问说网 · 发布于 2016-07-02

    jQuery Scroll Path按路径元素滚动动画插件

    jQuery Scroll Path是一个jQuery的滚动路径插件,可以让你自定义滚动路径。该插件是使用canvas flavored的语法来绘制路径,并且支…

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    有何不好

    小时候 看着满天的星斗 当流星飞过的时候 却总来不及许愿长大了 遇见自己真正喜欢的人却还是来不及我不相信爱情 但一直停不下来 恋爱是一场意外 何时 何地 何人……一切都仿佛悬疑 沉重且巨大

    102 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 2473

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 2326

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 2376

    图片素材

    关注 图片素材

    文章 29463 · 浏览 1863

    高清图片

    关注 高清图片

    文章 26530 · 浏览 2032

    更多 推荐作者

    关注 秋末残雪

    文章 106 · 评论 0

    关注 惢碎葬爱

    文章 96 · 评论 0

    关注 怎麽继续

    文章 90 · 评论 2

    关注 倾听寂寞

    文章 83 · 评论 0

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 籹孒不认输

    文章 94 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!