【问题标题】:XML parsing with Jquery or javascript使用 Jquery 或 javascript 解析 XML
【发布时间】:2016-08-06 01:00:42
【问题描述】:

我是 javascript 的新手,我正在处理一项任务,以根据给出的日期从月份和任何年份中获取包含“机器”、“人类”或“软件”的集合的数量.如有任何帮助,我将不胜感激。

<?xml version="1.0"?>
<resultset>
<set>
    <type>type1</type>
    <name>Patil</name>
    <date>2015-03-21</date>
    <tag>ThisIsALongText-|tag_machine</tag>
    <c_date>2015-01-12</c_date>
</set>
<set>
    <type>type1</type>
    <name>Patil</name>
    <date>2016-06-11</date>
    <tag>ThisIsALongText-|tag_human</tag>
    <c_date>2013-07-17</c_date>
</set>
<set>
    <type>type1</type>
    <name>Patil</name>
    <date>2016-05-21 </date>
    <tag>ThisIsALongText-|tag_software</tag>
    <c_date>2014-11-12</c_date>
</set>
<set>
    <type>type1</type>
    <name>Patil</name>
    <date>2015-12-10</date>
    <tag>ThisIsALongText-|tag_human</tag>
    <c_date>2015-04-12</c_date>
</set>
<set>
    <type>type1</type>
    <name>Patil</name>
    <date>2015-03-21</date>
    <tag>ThisIsALongText-|tag_machine</tag>
    <c_date>2016-02-23</c_date>
</set>

【问题讨论】:

  • 你试过什么代码?
  • 任何一个都可以。 jQuery 是一个 JavaScript 库。 jQuery 的缺点是初始加载时间。无论如何,你应该先学习 JavaScript,但 jQuery 确实让开发变得容易,而且它在每个人的缓存中。

标签: javascript jquery arrays sorting


【解决方案1】:

你可以使用jQuery来解析XML,有一个$.parseXML函数。

像这样使用它:

var xml = $.parseXML(myXML);
var tags = $(xml).find('tag');

变量tags 将是一个包含所有标签的数组。

More informations here

and a demo here

【讨论】:

    【解决方案2】:

    使用DOMParser API,您可以将XML 转换为DOM 元素,因此您可以使用getElementByIdgetElementsByTagName ... 方法:

    var parser = new DOMParser();
    var doc = parser.parseFromString(yourXML, "text/xml");
    

    编辑

    var parser = new DOMParser();
    var doc = parser.parseFromString('<resultset> <set> <type>type1</type> <name>Patil</name> <date>2015-03-21</date> <tag>ThisIsALongText-|tag_machine</tag> <c_date>2015-01-12</c_date> </set> <set> <type>type1</type> <name>Patil</name> <date>2016-06-11</date> <tag>ThisIsALongText-|tag_human</tag> <c_date>2013-07-17</c_date> </set> <set> <type>type1</type> <name>Patil</name> <date>2016-05-21 </date> <tag>ThisIsALongText-|tag_software</tag> <c_date>2014-11-12</c_date> </set> <set> <type>type1</type> <name>Patil</name> <date>2015-12-10</date> <tag>ThisIsALongText-|tag_human</tag> <c_date>2015-04-12</c_date> </set> <set> <type>type1</type> <name>Patil</name> <date>2015-03-21</date> <tag>ThisIsALongText-|tag_machine</tag> <c_date>2016-02-23</c_date> </set>', "text/xml");
    var set = doc.getElementsByTagName('set');
    var dates = doc.getElementsByTagName('date');
    var date1Month = dates[0].innerHTML.split('-')[1];
    var date1Year = dates[0].innerHTML.split('-')[0];
    
    var arrDates = [].map.call(dates, function(element) { return element; });
    
    var allDates = arrDates.map(function(date) { return date.innerHTML });
    

    【讨论】:

    • 看来我必须使用正则表达式获取年份和月份,然后标签也使用正则表达式才能开始。如果你有,任何代码 sn-p 都可能有用。
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2011-12-12
    • 2012-10-08
    • 2011-02-17
    相关资源
    最近更新 更多