【问题标题】:Parse XML into a string using javascript or jquery使用 javascript 或 jquery 将 XML 解析为字符串
【发布时间】:2011-02-14 21:43:06
【问题描述】:

我需要使用 Javascript 或 Jquery 根据用户的搜索输入将 XML 解析为字符串。

XML 位于 rssfeed.ucoz.com/rssfeed.xml 太大,无法放在这里。

例子:

原始 XML

<item>
    <title>Abyssal Warder fire</title>
    <guid isPermaLink="false">//lh5.googleusercontent.com/_qvhVKLFln2A/TU-51_bGZ9I/AAAAAAAAEW4/uAmzL3e-vn0/Abyssal%20Warder%20fire.jpg</guid>
    <media:description>Giant Destroyer</media:description> 
    <media:thumbnail url="http://lh5.googleusercontent.com/_qvhVKLFln2A/TU-51_bGZ9I/AAAAAAAAEW4/uAmzL3e-vn0/s144/Abyssal%20Warder%20fire.jpg" />
    <media:group>
        <media:content url="http://lh5.googleusercontent.com/_qvhVKLFln2A/TU-51_bGZ9I/AAAAAAAAEW4/uAmzL3e-vn0/Abyssal%20Warder%20fire.jpg" />
        <media:content isDefault="true" width="685" height="295" url="http://rssfeed.ucoz.com/Battleforge.html" type="text/html" /> 
    </media:group> 
</item>

<item>
    <title>Abyssal Warder frost</title>
    <guid isPermaLink="false">//lh4.googleusercontent.com/_qvhVKLFln2A/TU-54ZuHv6I/AAAAAAAAEW8/gtPs25XUjhY/Abyssal%20Warder%20frost.jpg</guid>
    <media:description>Giant Destroyer</media:description> 
    <media:thumbnail url="http://lh4.googleusercontent.com/_qvhVKLFln2A/TU-54ZuHv6I/AAAAAAAAEW8/gtPs25XUjhY/s144/Abyssal%20Warder%20frost.jpg" />
    <media:group>
            <media:content url="http://lh4.googleusercontent.com/_qvhVKLFln2A/TU-54ZuHv6I/AAAAAAAAEW8/gtPs25XUjhY/Abyssal%20Warder%20frost.jpg" />
            <media:content isDefault="true" width="685" height="295" url="http://rssfeed.ucoz.com/Battleforge.html" type="text/html" /> 
    </media:group> 
</item>

当用户搜索“Abyssal Warder Fire”或仅搜索“Abyssal Fire”时,结果为字符串

<item>
    <title>Abyssal Warder fire</title>
    <guid isPermaLink="false">//lh5.googleusercontent.com/_qvhVKLFln2A/TU-51_bGZ9I/AAAAAAAAEW4/uAmzL3e-vn0/Abyssal%20Warder%20fire.jpg</guid>
    <media:description>Giant Destroyer</media:description> 
    <media:thumbnail url="http://lh5.googleusercontent.com/_qvhVKLFln2A/TU-51_bGZ9I/AAAAAAAAEW4/uAmzL3e-vn0/s144/Abyssal%20Warder%20fire.jpg" />
    <media:group>
        <media:content url="http://lh5.googleusercontent.com/_qvhVKLFln2A/TU-51_bGZ9I/AAAAAAAAEW4/uAmzL3e-vn0/Abyssal%20Warder%20fire.jpg" />
        <media:content isDefault="true" width="685" height="295" url="http://rssfeed.ucoz.com/Battleforge.html" type="text/html" /> 
    </media:group> 
</item>

我已经在网上搜索了 5 天,但我什么也得不到。我看到的所有结果都是已解析的 xml,显示为 HTML,但没有显示为字符串。我需要它作为字符串,因为我会将它提供给需要它作为字符串的 Web 应用程序的 api。请帮助,任何关于如何实现这一点的想法或代码将不胜感激。提前致谢。

【问题讨论】:

  • 问题不清楚。您将其加载为 ajax 并按原样传递给另一个服务?当您使用“解析”一词时,它意味着您希望将 XML 读入数据结构。
  • 在 Javascript 中解析 XML 对客户端来说太繁重了。您应该使用 PHP 解析 XML 以获取您想要的内容(即使用 Ajax 调用)。
  • @jiggy 我没有将它作为 ajax 加载,而是作为 xml 并将其(包括所有标签)作为字符串按原样传递给另一个服务。有办法吗?

标签: javascript jquery xml search


【解决方案1】:

编辑:我忘了提到我正在使用 JQuery

这是我的观点:

function init(){
   $.ajax({
      type: "GET",
      url: "http://localhost/gis/hola.xml",    // this should be your XML url
      dataType: "text",
      success: parseXml    // your own callback function
   });
}

function parseXml(xml){
   xml = xml.replace(/\n/g,'');       // just to replace carry return
   var url = 'http://localhost/'+xml;
   alert(url);
}

您的 xml 文件是:

<?xml version="1.0" encoding="utf-8" ?>
<RecentTutorials>
  <Tutorial author="The Reddest">
    <Title>Silverlight and the Netflix API</Title>
  </Tutorial>
</RecentTutorials>

那么,您的url 变量应该是(记得在发送之前将“/”符号转换为特定的 ASCII 字符 (http://www.asciitable.com/)):

http://localhost/<?xml version="1.0" encoding="utf-8" ?><RecentTutorials><Tutorial author="The Reddest"><Title>Silverlight and the Netflix API</Title></Tutorial></RecentTutorials>

url 现在有了这个值。如果您尝试在div 上显示此变量:

Silverlight and the Netflix API

因为您的浏览器不会跳过 &lt;&gt; 符号。

尝试像这样调用你的函数:

function parseXml(xml){
   xml = xml.replace(/\n/g,'');       // just to replace carry return
   cooliris.embed.setFeedContents('XML parsed as string: '+xml) 
}

希望对你有帮助。编码愉快!

【讨论】:

    【解决方案2】:

    如果我正确理解您的问题,听起来您只需要通过 XMLHttpRequest 加载该 XML,然后使用 XPath 查询来定位您要查找的内容。

    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.open("GET","http://rssfeed.ucoz.com/rssfeed.xml ",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML; 
    

    【讨论】:

    • @Fran Verona 您好,感谢您的回复。不幸的是,我不能使用 php 或 Ajax,因为该网站是免费托管的 - 因此存在限制。
    • @user607323 谢谢。但是,我可以知道字符串存储在哪里吗?我目前正在使用 Cooliris API for Media RSS,它有 cooliris.embed.setFeedContents(mediaRSS) 我只需将 mediaRSS 替换为查询的字符串。
    • @user607323 好的,我在这里给你一些关于那个的链接switchonthecode.com/tutorials/xml-parsing-with-jqueryhiteshagrawal.com/javascript/…
    • @Fran Verona 感谢您的链接。但是,有没有办法将它作为字符串放置?因为我会将字符串提供给 Web 应用程序。当用户搜索深渊之火时,我需要实现以下目标:cooliris.embed.setFeedContents(' XML parsed as string: Abyssal Warder fire etc ')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2013-05-12
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    相关资源
    最近更新 更多