㈠ 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