㈠ js 如何读取xml文档内容
先判断浏览器,然后读取xml数据就可以了
//判断不同的浏览器
function InitMf()
{
var mf_change=false;
try {
mf_change = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
mf_change = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
mf_change = false;
}
}
if (!mf_change && typeof XMLHttpRequest!='undefined') {
mf_change = new XMLHttpRequest();
}
return mf_change;
}
读取数据
var xmlHttp = InitMf();
var HTML = "";
//获得xml文件
xmlHttp.open("GET", xmlfile+"?"+Math.random(), true);
// 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定
xmlHttp.onreadystatechange=function() {
//alert(xmlHttp.status);
if (xmlHttp.readyState==4 && xmlHttp.status==200) {
//ajax的XML传输的解析。获取解析的数据
var xml = xmlHttp.responseXML;
var node = xml.getElementsByTagName("item");//获得总结点
for(var i = 0 ; i < node.length ; i++){
var str_t = "";
var str_d = "";
var menuHTML = "";
var elem = node[i];
//下面开始获得子节点数据,当然可以继续循环,获得更下面的节点
var title = elem.getElementsByTagName("title")[0].textContent != undefined ? elem.getElementsByTagName("title")[0].textContent : elem.getElementsByTagName("title")[0].text;
这些只是部分代码,不过已经足够了
㈡ js怎么获取xml里某个节点的值并输出
这个 ,在网上找到了你要的答案 ,经测试是可以使用的.
XML 文件(假设为“names.xml”,注意文件编码)
<?xmlversion="1.0"encoding="gbk"?>
<names>
<name>张三</name><name>李四</name><name>王五</name>
</names>
javaScript 代码(需要放在 HTML 页面中,并在浏览器中执行)
//<scripttype="text/javascript">
//----加载XML文档的函数----
functionloadXMLDoc(xmlFile){
varxmlDoc;
try{
//InternetExplorer可以使用其原生方法加载XML
xmlDoc=newActiveXObject("Microsoft.XMLDOM");
}catch(e){
try{
//Firefox也有标准方法,但可能造成其他浏览器报错,故省略
//使用XMLHttpRequest替代,适用于大部分浏览器
varxmlHttp=newXMLHttpRequest();
xmlHttp.open("GET",xmlFile,false);
xmlHttp.send(null);
returnxmlHttp.responseXML;
}catch(e){
returnnull;
}
}
xmlDoc.async=false;
xmlDoc.load(xmlFile);
returnxmlDoc;
}
//----解析names.xml的例子----
varxml=loadXMLDoc("names.xml");
//获取XML文档
vardomElems=xml.getElementsByTagName("name");
//获取文档中"name"元素节点集合(数组)
varstrNames=newArray(domElems.length);
//创建"strNames"数组用于存储"用户名"
for(vari=0;i<domElems.length;i++)
strNames[i]=domElems[i].childNodes[0].data;
//取得"name"元素节点的子节点(文本节点)的数据,并存入"strNames"数组
alert(strNames.join());
//测试,输出"strNames"数组(预期结果:"张三,李四,王五")
//</script>
㈢ iframe js跨域解析xml 获取iframe中xml的数据
不可以的。用js是实现不了的。浏览器是禁止JS跨域操作的,这对于iframe调用其他域名下的页面一样是禁止的。
这是w3c上的练习?是的话,请在w3c网站上测试.
㈣ js解析xml的问题(如何获取某节点的属性)
给你个函数,传Node,属性名进去获取属性值,兼容所有浏览器:
function getAttributeValue (xmlNode,attrName){
if(!xmlNode)return "" ;
if(!xmlNode.attributes) return "" ;
if(xmlNode.attributes[attrName]!=null) return xmlNode.attributes[attrName].value ;
if(xmlNode.attributes.getNamedItem(attrName)!=null) return xmlNode.attributes.getNamedItem(attrName).value ;
return "" ;
}
获取专 p1 的值,就属是 getAttributeValue(p,"p1") ;
㈤ 关于js读取xml数据并且显示在html中 如何实现
JS]利用js将读取到的xml文件中的数据显示到html文档上
script type="text/javascript" language="javascript">
var xmlDoc = checkXMLDocObj('../openClass.xml');//读取到xml文件中的数据
var a = document.getElementsByTagName("a");//获取所有的A标签
$(document).ready(function () {
var nodes;
if($.browser.msie){ // 注意各个浏览器之间的区别
nodes = xmlDoc.getElementsByTagName('collage')[0].childNodes; //读取XML文件中需要显示的数据
}
else if (isFirefox=navigator.userAgent.indexOf("Firefox")>0){
nodes = xmlDoc.getElementsByTagName('collage')[0].children; //读取XML文件中需要显示的数据
}
else{
nodes = xmlDoc.getElementsByTagName('resource');
}
for (var i = 0; i < a.length; i++) {
if (a[i].parentNode.nodeName == "SPAN") {
for (var j = 0; j < nodes.length; j++) {
var resource = nodes[j];
var url = resource.getAttribute('url');
var href=$(a[i]).attr("href");
if (href == url) {
var count = resource.getAttribute('click');
var span = document.createElement("div");
var str = document.createTextNode("点击率:" + count);
span.appendChild(str);
var div = a[i].parentNode.parentNode;
div.appendChild(span);
break;
}
}
}
}
});
$(function(){ //通过get请求,将点击率增加
$(a).mousedown(function(){
var href = $(this).attr("href");
$.get("../receive.ashx",{url:href,rd:Math.random()}, function (msg) {
});
})
})
</script>
㈥ js如何解析xml字符串
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');
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);
}
}
㈦ 怎么通过js跨域获取xml文件并解析到html上呢我要弄一个简单天气预报的页面,主要是怎么去获取。
既然是个API,按理它本身应该提供跨域解决方案的,否则它就是个不完善的API。如果确实要自己解决,我个人认为只有通过代理页面转发才是最好的方法,就是说自己要有可控制的服务器( 虚拟主机也可),然后用php、asp或jsp做一个程序文件,你的js把ajax请求发送到这个文件中,这个文件再通过你说的api把请求发送到目标服务器(服务器间的通讯是不存在跨域问题的),获取到xml数据后再转发给你的js,也就是说你只需要跟你自己的服务器联系即可,剩下的事由它去完成。
㈧ 使用js实现html加载xml内容(本地电脑使用)
JS中有原生函数,支持解析xml字符串或者文件。
(newDOMParser()).parseFromString(xxxxx)
这个代码可以解析XML字符串,为对象。
<html>
<body>
<scripttype="text/javascript">
try//InternetExplorer
{
xmlDoc=newActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try//Firefox,Mozilla,Opera,Chrome,etc.
{
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e){alert(e.message)}
}
try
{
xmlDoc.async=false;
xmlDoc.load("books.xml");
document.write("xmlDocisloaded,readyforuse");
}
catch(e){alert(e.message)}
</script>
</body>
</html>
上面这段代码可以解析一个XML文件。
具体的可参考下面教程,或者小乐阅读(Chrome浏览器中的RSS阅读器)中的源代码
http://www.w3school.com.cn/xmldom/dom_parser.asp