Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用HTML5文件API读取和解析XML文件_Javascript_Xml_Html_Filereader_Domparser - Fatal编程技术网

Javascript 使用HTML5文件API读取和解析XML文件

Javascript 使用HTML5文件API读取和解析XML文件,javascript,xml,html,filereader,domparser,Javascript,Xml,Html,Filereader,Domparser,我正在尝试读取如下用户XML文件(sitemap.XML文件): <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitema

我正在尝试读取如下用户XML文件(sitemap.XML文件):

<?xml version="1.0" encoding="UTF-8"?>
<urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
  <loc>http://www.myhost.com/</loc>
  <lastmod>2016-09-08T13:50:33+00:00</lastmod>
</url>
</urlset>

http://www.myhost.com/
2016-09-08T13:50:33+00:00
如何以结构化/编程的方式读取XML解析的内容

尝试了使用DomParser(XmlDocument)和DOM解释器(HtmlElement)的两种方法


函数readfile(fileinputobj){
var reader=new FileReader();
reader.onload=函数(e){
警报(reader.result);
//使用DOMParser获取XMLDocument
var parser=new DOMParser(),
xmlDoc=parser.parseFromString(reader.result,“text/xml”);
if(xmlDoc.documentElement){
console.log(xmlDoc.documentElement);
//xmlDoc.documentElement.nodeName=='urlset'
}
//使用DOM解释器获取HtmlDocument
var doc=document.createElement(“div”);
doc.innerHTML=reader.result;
if(doc.querySelector('urlset')){
console.log(doc.querySelector('urlset');
//doc.querySelector('urlset')。标记名=='urlset'
}
}
reader.readAsText(fileinputobj.files[0]);
}
实现这一点的最佳、安全和跨浏览器方式是什么, 并遍历XML文档以查询属性和内容

编辑: 搜索更多信息我在中找到了跨浏览器兼容性解决方案 及

XmlDocument似乎与几乎所有使用IE6-IE8中的
DomParser
ActiveXObject(“Microsoft.XMLDOM”)
的知名浏览器兼容


对于XML浏览,我发现通常使用
xmllem=xmldoc.getElementById()
来选择标记,
xmllem.childNodes
来获取内部节点,
xmllem.getAttribute()
来读取标记属性。没问题吧?

我遇到过最兼容的跨浏览器解析XML数据的方法,就是使用以下代码获取解析XML数据的对象(XMLDOM的第二部分是针对IE5-8浏览器的):

var xmldata=“txt1 txt2”;
var-xmlDoc;
if(window.DOMParser){
//现代浏览器的代码
parser=新的DOMParser();
xmlDoc=parser.parseFromString(xmldata,“text/xml”);
}否则{
//旧IE浏览器的代码
xmlDoc=新的ActiveXObject(“Microsoft.XMLDOM”);
xmlDoc.async=false;
loadXML(xmldata);
} 
然后,我测试了以下方法以获取xml数据的相关信息:

var node=0;  //example node index
console.log(xmldata);
console.log("Tag:"+xmlDoc.childNodes[node].tagName);
console.log("Attribute: name="+xmlDoc.childNodes[node].getAttribute("name"));
console.log(xmlDoc.childNodes[node]);
console.log("Text Content:"+xmlDoc.childNodes[node].text); //only works with XMLDOM
console.log("Text Content:"+xmlDoc.childNodes[node].textContent); //only works with DomParser
console.log("Child nodes:"+xmlDoc.childNodes[node].childNodes.length);
for(var i=0;i<xmlDoc.childNodes[node].childNodes.length;i++){
   console.log("Child node "+i+":"+xmlDoc.childNodes[node].childNodes[i].tagName);
}
var节点=0//示例节点索引
console.log(xmldata);
log(“标记:+xmlDoc.childNodes[node].tagName”);
console.log(“Attribute:name=“+xmlDoc.childNodes[node].getAttribute(“name”));
log(xmlDoc.childNodes[node]);
log(“文本内容:+xmlDoc.childNodes[node].Text”)//仅适用于XMLDOM
log(“文本内容:+xmlDoc.childNodes[node].textContent”)//仅适用于DomParser
log(“子节点:+xmlDoc.childNodes[node].childNodes.length”);
对于(var i=0;i
var xmldata="<data name=\"test\">txt1 <item>txt2</item></data>";

var xmlDoc;
if (window.DOMParser  ) {
      // code for modern browsers
      parser = new DOMParser();
      xmlDoc = parser.parseFromString(xmldata,"text/xml");
} else {
      // code for old IE browsers
      xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async = false;
      xmlDoc.loadXML(xmldata); 
 } 
var node=0;  //example node index
console.log(xmldata);
console.log("Tag:"+xmlDoc.childNodes[node].tagName);
console.log("Attribute: name="+xmlDoc.childNodes[node].getAttribute("name"));
console.log(xmlDoc.childNodes[node]);
console.log("Text Content:"+xmlDoc.childNodes[node].text); //only works with XMLDOM
console.log("Text Content:"+xmlDoc.childNodes[node].textContent); //only works with DomParser
console.log("Child nodes:"+xmlDoc.childNodes[node].childNodes.length);
for(var i=0;i<xmlDoc.childNodes[node].childNodes.length;i++){
   console.log("Child node "+i+":"+xmlDoc.childNodes[node].childNodes[i].tagName);
}