我的XML文件格式如下
<;标记>;
<;标记>;
<;类型></类型>;
<;标题></标题>;
<;地址></地址>;
<;纬度></纬度>;
<;经度></经度>;
<;标记>;
<;标记>;
<;类型></类型>;
<;标题></标题>;
<;地址></地址>;
<;纬度></纬度>;
<;经度></经度>;
<;标记>;
</标记>;
请建议我如何读取所有“标记”元素。
我需要获取“marker”的所有子元素的值
谢谢
下面的代码将任何XMLObject或字符串转换为本机JavaScript对象。然后,您可以在对象上行走以提取所需的任何值
/**
*尝试通过遍历DOM树将给定的XML数据转换为本机JavaScript对象。
*如果给定一个字符串,它首先尝试从给定的字符串创建一个XmlDomeElement。
*
*@param{XMLDomElement | String}源XML字符串或包含对象所需数据的XMLDomElement。
*@param{Boolean}[includeRoot]是否“必需”主容器节点应该是结果对象的一部分。
*@return{Object}从给定XML数据构造的本机JavaScript对象,如果发生任何错误,则为false。
*/
Object.fromXML=函数(源,includeRoot){
如果(源的类型=='string')
{
尝试
{
if(window.DOMParser)
source=(新的DOMParser()).parseFromString(源,“application/xml”);
else if(window.ActiveXObject)
{
var xmlObject=newActiveXObject(“Microsoft.XMLDOM”);
xmlObject.async=false;
loadXML(源代码);
source=xmlObject;
xmlObject=未定义;
}
其他的
抛出新错误(“找不到XML解析器!”);
}
捕获(错误)
{
返回false;
}
}
var result={};
if(source.nodeType==9)
source=source.firstChild;
如果(!includeRoot)
source=source.firstChild;
while(来源){
if(source.childNodes.length){
if(结果中的source.tagName){
if(结果[source.tagName].constructor!=数组)
结果[源标记名]=[结果[源标记名];
结果[source.tagName].push(Object.fromXML(source));
}
其他的
结果[source.tagName]=Object.fromXML(源);
}else if(source.tagName)
结果[源.tagName]=源.nodeValue;
如果(!source.nextSibling){
if(source.nodeValue.clean()!=“”){
结果=source.nodeValue.clean();
}
}
source=source.nextSibling;
}
返回结果;
};
String.prototype.clean=函数(){
var self=这个;
返回此值。替换(/(\r\n |\n |\r)/gm,“”)。替换(/^\s+\s+$/g,“”);
}