使用Javascript从HTML字符串中的标记获取内容
我正在开发Tianium中的一个应用程序,它需要能够在Android和iOS上部署。应用程序通过RSS提要获取信息,我想在窗口中显示项目的内容。我试着把它放在一个使用Javascript从HTML字符串中的标记获取内容,javascript,html,rss,titanium,Javascript,Html,Rss,Titanium,我正在开发Tianium中的一个应用程序,它需要能够在Android和iOS上部署。应用程序通过RSS提要获取信息,我想在窗口中显示项目的内容。我试着把它放在一个网络视图中,但这不是我想要的,我想能够确定哪个元素去了哪里(图像、介绍和内容) 例如,这可能是RSS提要项目的内容: var content = "<p><img src=\"..." alt=\"dreigtweet\" width=\"280\" height=\"210\" class=\"alignright
网络视图中
,但这不是我想要的,我想能够确定哪个元素去了哪里(图像、介绍和内容)
例如,这可能是RSS提要项目的内容:
var content = "<p><img src=\"..." alt=\"dreigtweet\" width=\"280\" height=\"210\" class=\"alignright size-full wp-image-19148\" \/><strong>Een 14-jarig meisje uit Rotterdam is aangehouden omdat ze in een dreigtweet stuurde naar luchtvaartmaatschappij American Airlines. Ze had zich zelf gemeld bij de politie.<\/strong><\/p> <p>Het meisje stuurde zondag onder de naam Sarah het berichtje naar de Amerikaanse luchtvaartmaatschappij, maar die nam de tweet uiterst serieus.<\/p> <p>De tiener schreef: “Hallo mijn naam is Ibrahim en ik kom uit Afghanistan. Ik maak deel uit van al-Qaeda en op 1 juni ga ik echt iets groots doen, dag.”<\/p> <p>Ze kreeg vrijwel direct antwoord van American Airlines: “Sarah, we nemen deze dreigementen zeer serieus. Jouw IP-adres en overige gegevens zullen aan de beveiliging en de FBI worden doorgegeven”.<\/p> <p>Sarah smeekte in een reeks tweets om vergiffenis, die door een steeds grotere twitterschare werd gevolgd. \u201CIk heb zo’n spijt, ik ben echt bang nu. Ik maakte een grapje, alsjeblieft doe het niet, ik ben maar een meisje\u201D, schreef de Rotterdamse in verschillende boodschappen.<\/p> <p>In de loop van zondagavond had het meisje er vele duizenden volgers bijgekregen. Inmiddels is haar Twitteraccount opgeschort.<\/p> <p>De Rotterdamse politie wil geen toelichting geven op de aanhouding van het meisje.<\/p> <p>Bron: Rijnmond.nl<\/p> <p><script type=\"text\/javascript\"><!-- google_ad_client = \"ca-pub-4354345434554545\"; \/* ijsselmondenieuws.nl *\/ google_ad_slot = \"434323442\"; google_ad_width = 468; google_ad_height = 60; \/\/--> <\/script><br \/> <script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"> <\/script><\/p>";
然后将其加载到标签中,如下所示:
var introText = getIntro(postContent);
var intro = Ti.UI.createLabel({
width : '90%',
height : 'auto',
color : '#000',
backgroundColor : '#FFF',
top : '10dp',
textAlign : 'left',
font : {
fontSize : '16dp',
fontWeight : 'bold'
},
text : introText
});
所以这是一个障碍。下一步是通过以下
元素循环,并将文本放在新的标签中的每个标签之间,或者甚至放在表格行中,这样我就可以伪造段落。但是,我不知道如何在这里获取所有的文本
标记,通过它们循环并将其内容添加到窗口中
非常感谢您的帮助 我将使用它来解析内容并访问段落中的文本:
var content=“…Text1Text2…”;
//解析内容
content=$($.parseHTML(content,document,false));
//p标签
var p=内容过滤器(“p”);
//对内容执行某些操作(例如,将的文本设置为所有段落的合并文本)
$($h1”).text($.map(p,$.text).join(“+”));
请看一下这个函数
警告提示:切勿用于不受信任的来源!!!从文件中:
大多数接受HTML字符串的jQueryAPI将运行HTML中包含的脚本。除非keepScripts显式为true,否则jQuery.parseHTML不会在解析的HTML中运行脚本。但是,在大多数环境中,仍然可以间接执行脚本,例如通过属性。调用者应该意识到这一点,并通过清除或转义来自URL或Cookie等来源的任何不可信输入来防范
感谢您的投入和信息。然而,我使用的是Tianium,它不可能使用DOM
,因此我认为使用JQuery在本例中不起作用。您知道纯javascript的解决方法吗?不幸的是,不知道。但也许你可以在Tianium的API中找到类似于parseHTML
的东西。。。
var introText = getIntro(postContent);
var intro = Ti.UI.createLabel({
width : '90%',
height : 'auto',
color : '#000',
backgroundColor : '#FFF',
top : '10dp',
textAlign : 'left',
font : {
fontSize : '16dp',
fontWeight : 'bold'
},
text : introText
});
var content = "<div>...</div><p>Text1</p><p>Text2</p><div>...</div>";
// parse Content
content = $($.parseHTML(content, document, false));
// p-Tags
var p = content.filter("p");
// do something with content (for example set the text of <h1> to the joined text of all paragraphes)
$("h1").text($.map(p, $.text).join(" + "));