Js读取input框的xml文件并由jq解析
说明
我文件是cnblogs
文章备份导出的xml
文件,目的我是想获取导出的xml
的每篇文章的信息。
读取文件
html文件部分
<div>xml文件:<input type="file" name="xml" id="xml"></div>
<br>
<div><input type="button" id="submit" value="提交"></div>
js部分
$('#submit').click(function(){
let obj = document.getElementById("xml");
let file = obj.files[0];
let fr = new FileReader();
fr.readAsText(file);
fr.onload = function(){
console.log(fr.result);
}
});
读取xml
xml
虽然和html
有很多不同,但是可以简答理解为html
的严格版本。所以直接使用jq,读取元素的形式,是可以取到里面的内容的。
比如我想取出,<channel>
标签中的<item>
,可以这样写。
$(xml).find('channel item')
xml
就是xml
的文本,就是上面的fr.result
的值。
结果如下:
S.fn.init(18) [item, item, item, item, item, item, item, item, item, item, item, item, item, item, item, item, item, item, prevObject: S.fn.init(2)]
下面是其中item
中的节点列表。
childNodes: NodeList(8)
0: title
1: link
2: text
3: dc:creator
4: author
5: pubdate
6: guid
7: description
获取处理
现在打印下读取到item
元素。
// 解析xml格式
function parseXml(xml){
$(xml).find('channel item').each(function(index, value){
console.log(value);
});
}
<item>
<title>新版PHP7安装redis扩展并在laravel中运用</title>
<link>"http://www.cnblogs.com/hxsen/archive/2020/04/20/12739781.html"
<dc:creator>houxin</dc:creator>
<author>houxin</author>
<pubdate>Mon, 20 Apr 2020 11:02:00 GMT</pubdate>
<guid>http://www.cnblogs.com/hxsen/archive/2020/04/20/12739781.html</guid>
<description>…</description>
</item>
<item>…</item>
现在,使用如下方式对元素进行取值。
// 解析xml格式
function parseXml(xml){
$(xml).find('channel item').each(function(index, value){
let title = $(this).find('title').text();
let link = $(this).find('guid').text();
let pubDate = $(this).find('pubdate').text();
let description = $(this).find('description').text();
console.log(title, link, pubDate);
});
}