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')
xmlDoc.loadXml(xmlStr)
var pNode = xmlDoc.selectSignNode('people')
var result = ''
for(var node in pNode.selectNodes('*')){
result+=(result.length>0?',':'') + node.nodeName+'='+node.innerText
}
alert(reuslt)
或者用DOM操作:
<xml id='testXml' />
var result = ''
with(document.getElementById('testXml')){
innerHTML = xmlStr
for(var child in children){
result += ',' + child.tagName + '=' + child.innerText
}
if(result.length >0){
result = result.substring(1)
}
}
1、用 childNodes 属性,按顺序取
实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。
//pId 待取节点父节点序号
//cId 待取节点序号
function getXmlNodeValue(pId, cId) {var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load("employeeInfo.xml")
var nodes = xmlDoc.documentElement.childNodes[pId].childNodes[cId]return nodes.childNodes[0].text
}
调用方法:alert(getXmlNodeValue(1, 2))
2、用 for 循环来取
实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。
//nodeValue 待取节点的所属节点值
function getXmlNodeValueFor(nodeValue){var xmlDoc
try {
//创建一个 ie 支持的 XML 文档对象
xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
}catch(e){
try{
//创建FireFox空的XML文档对象
xmlDoc=document.implementation.createDocument("","",null)
}catch(e){
alert(e.message)
return ""
}
}
xmlDoc.async = false
try {
xmlDoc.load("employeeInfo.xml")
}catch(e){
alert(e.message)
return ""
}
var xd=xmlDoc.documentElement.childNodes
if(xd==null)
return ""
var tempValue
for(var i=0i<xd.lengthi++){
if(xd[i].childNodes[0].childNodes[0].nodeValue==nodeValue) tempValue=xd[i].childNodes[2].childNodes[0].nodeValue
}
return tempValue
}
调用方法:alert(getXmlNodeValueFor("王佳琳"))
JS里面使用join把数组转换为字符串传递给PHP,PHP再使用explode把获取的字符串转换为数组,例如:调用的JS:
<script type="text/javascript">
var oCC=new TClientCheck()
var str=oCC.join('|')
location.href='but.php?str='+str
</script>
处理的PHP:
<?php
$str=$_GET["str"]
$oCC=explode('|', $str)
print_r($oCC)
?>