zoukankan      html  css  js  c++  java
  • 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);
        });
    }
    
  • 相关阅读:
    shell脚本杀掉指定进程下所有子进程(包括子进程的子进程)
    XDebug调试
    PHP基础入门
    猴子补丁(Monkey Patching)
    编写python高质量python代码的59个有效方法
    ubuntu中不能使用终端的情况
    一些个人有用的网站
    Ubuntu将自带的python3升级
    [Vue warn]: You may have an infinite update loop in a component render function.
    OO第四单元总结&期末总结
  • 原文地址:https://www.cnblogs.com/hxsen/p/12794673.html
Copyright © 2011-2022 走看看