
var xmlStr = '<root><people><name>张三</name><address>北京</address></people></root>';
var result = null;
eval('result=['+$(xmlStr)find('people')map(function(){
return '{'+$('',this)map(function(){
return $(this)attr('tagName') + ':"' + $(this)text() + '"';
})get()join(',') + '}';
})get()join('],[')+']');
alert(result);
//result是一个数组,如果有多个people节点,则为:[{name:"张三",address="北京"},{name:"李四",address="上海"}]
不好意思偏题了,以下是你要的结果:
var result = $(xmlStr)find('people')children()map(function(){
return $(this)attr('tagName')+'='+$(this)text();
})get()join();
上面的都是jquery的写法:
javascript的话:
用COM *** 作:
object xmlDoc = new ActiveObject('msxml2');
xmlDocloadXml(xmlStr);
var pNode = xmlDocselectSignNode('people');
var result = '';
for(var node in pNodeselectNodes('')){
result+=(resultlength>0',':'') + nodenodeName+'='+nodeinnerText;
}
alert(reuslt);
或者用DOM *** 作:
<xml id='testXml' />
var result = '';
with(documentgetElementById('testXml')){
innerHTML = xmlStr;
for(var child in children){
result += ',' + childtagName + '=' + childinnerText;
}
if(resultlength > 0){
result = resultsubstring(1);
}
}
已知有一个XML文件(bookstorexml)如下:
<xml version="10" encoding="gb2312">
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberons Legacy</title>
<author>Corets, Eva</author>
<price>595</price>
</book>
</bookstore>
1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDocLoad("bookstorexml");
XmlNode root=xmlDocSelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe1=xmlDocCreateElement("book");//创建一个<book>节点
xe1SetAttribute("genre","李赞红");//设置该节点genre属性
xe1SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性
XmlElement xesub1=xmlDocCreateElement("title");
xesub1InnerText="CS从入门到精通";//设置文本节点
xe1AppendChild(xesub1);//添加到<book>节点中
XmlElement xesub2=xmlDocCreateElement("author");
xesub2InnerText="候捷";
xe1AppendChild(xesub2);
XmlElement xesub3=xmlDocCreateElement("price");
xesub3InnerText="583";
xe1AppendChild(xesub3);
rootAppendChild(xe1);//添加到<bookstore>节点中
xmlDocSave("bookstorexml");
//===============================================
结果为:
<xml version="10" encoding="gb2312">
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberons Legacy</title>
<author>Corets, Eva</author>
<price>595</price>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>583</price>
</book>
</bookstore>
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
XmlNodeList nodeList=xmlDocSelectSingleNode("bookstore")ChildNodes;//获取bookstore节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xeGetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”
{
xeSetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”
XmlNodeList nls=xeChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2Name=="author")//如果找到
{
xe2InnerText="亚胜";//则修改
break;//找到退出来就可以了
}
}
break;
}
}
xmlDocSave("bookstorexml");//保存。
//==================================================
最后结果为:
<xml version="10" encoding="gb2312">
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberons Legacy</title>
<author>Corets, Eva</author>
<price>595</price>
</book>
<book genre="update李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>亚胜</author>
<price>583</price>
</book>
</bookstore>
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
XmlNodeList xnl=xmlDocSelectSingleNode("bookstore")ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xeGetAttribute("genre")=="fantasy")
{
xeRemoveAttribute("genre");//删除genre属性
}
else if(xeGetAttribute("genre")=="update李赞红")
{
xeRemoveAll();//删除该节点的全部内容
}
}
xmlDocSave("bookstorexml");
//===========================================
最后结果为:
<xml version="10" encoding="gb2312">
<bookstore>
<book ISBN="2-3631-4">
<title>Oberons Legacy</title>
<author>Corets, Eva</author>
<price>595</price>
</book>
<book>
</book>
</bookstore>
4、显示所有数据。
XmlNode xn=xmlDocSelectSingleNode("bookstore");
XmlNodeList xnl=xnChildNodes;
foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
ConsoleWriteLine(xeGetAttribute("genre"));//显示属性值
ConsoleWriteLine(xeGetAttribute("ISBN"));
XmlNodeList xnf1=xeChildNodes;
foreach(XmlNode xn2 in xnf1)
{
ConsoleWriteLine(xn2InnerText);//显示子节点点文本
}
}
我看后发现有如下问题
1、javascript是一种脚本语言,是有一定安全限制的,不知道你打算通过xmlDocsave("XmlData/aboutxml");把aboutxml文件保存到客户端还是服务器端,如果是服务器端那是不可能的,需要自己写activex控件
2、javascript只能 *** 作浏览器内存中的dom对象,另存为xml文件一般是没有意义的
3、如果把xml文件保存到客户端这么做也不好,一般的杀毒软件也许会报为病毒,如果保存到客户端,我以前的办法是用applet数字签名,然后再保存
可以修改,我对JS并不是非常熟悉,给你一段代码参考一下。<script>
var xmldom
function test()
{
xmldom = new ActiveXObject("Msxml2DOMDocument")
xmldomasync = false;
xmldom = documentallmxhXMLDocument
}
function test2()
{
var xmldom = new ActiveXObject("Msxml2DOMDocument")
xmldomasync = false;
xmldom = documentallmxhXMLDocument
node = xmldomselectSingleNode("//nodeB")
node2 = xmldomcreateElement("nodeB")
node2text=parseInt(nodetext)+1
xmldomdocumentElementreplaceChild(node2,node)
node = xmldomselectSingleNode("//nodeB")
alert(nodetext)
alert(xmldomxml)
}
function test3()
{
documentfxmldatavalue= documentallmxhXMLDocumentxml
alert(documentfxmldatavalue)
documentfsubmit()
}
</script>
<body>
<XML id=mxh>
<root>
<nodeA>nodeA</nodeA>
<nodeB>30</nodeB>
</root>
</XML>
<form name=f action="xxasp">
<input name=xmldata type=hidden>
<input onclick="test()" type="button" value=old>
<input onclick="test2()" type="button" value=请多点几次>
<input onclick="test3()" type="button" value=保存>
</form>
保存,调用 xmldomsave("xxxxml")
这个就麻烦了,是改文件里的xml文荣,还是改xml字串里的内容。
如果是改文件,就要先读文件,读文件的代码可以搜索到。
改xml里的字串,不知道你是要替换还是有什么规则啊。
读xml文件
<script language="Javascript">
var xmlDoc=new ActiveXObject("MicrosoftXMLDOM")
xmlDocasync="false"
xmlDocload("notexml")
</script>
以上就是关于js如何解析请求返回的XML字符串全部的内容,包括:js如何解析请求返回的XML字符串、js 修改节点名、JS给XML添加子节点并写入数据!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)