2011-02-14 46 views
0

我需要根据用户的搜索输入使用Javascript或Jquery将XML解析为字符串。使用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> 

结果为字符串时,用户搜索 “深渊守卫火” 或只是 “深渊之火”

<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,它需要它作为一个字符串。请帮助,任何想法或代码如何完成这将不胜感激。提前致谢。

+0

问题不清楚。你正在加载这个Ajax并传递给另一个服务?当你使用“解析”这个词时,这意味着你希望将XML读入数据结构。 – jiggy 2011-02-14 21:54:00

+0

在Javascript中解析XML对客户端来说太重了。您应该解析XML以获得您想要的使用PHP(即使用Ajax调用)。 – 2011-02-14 22:06:43

回答

0

编辑:我忘了那求佛我使用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字符(h TTP://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 VAR:

Silverlight and the Netflix API 

由于您的浏览器不跳过<>符号。

试着打电话给你的功能是这样的:

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

我希望它可以帮助你。快乐编码!

0

如果我正确理解您的问题,听起来像所有您需要的是通过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;