TYR*_*AEL 1 javascript xml xml-parsing phantomjs
我对phantomjs很新.很长时间以来,我一直在搞乱这些问题.我知道我错过了很简单的事情.我有以下sitemap.xml:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>/</loc>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>/vehicles</loc>
<lastmod>2013-01-07</lastmod>
</url>
</urlset>
Run Code Online (Sandbox Code Playgroud)
现在我要做的就是使用phantomjs从xml文档中获取url值.我有以下内容.
page.open("sitemap.xml", function(status) {
if(status !== "success") {
console.log("Unable to open sitemap.");
} else {
// Stuck here
console.log(page.content);
}
});
Run Code Online (Sandbox Code Playgroud)
xml文件的内容将正确打印到屏幕上,但是如何使用该文档来播放xml?我只需要能够获得每个url节点的第一个子节点.我尝试将xml文档解析为DOMParser,但这似乎不对.非常感谢您的帮助.
另外你如何调试phatomjs所以我可以看到它的全部荣耀的对象?例如,如果我在Dev Tools中控制一个对象,我可以展开它并查看键 - 值对.我猜终端不提供这种奢侈品?
PhantomJS允许您从页面上下文中调用javascript.使用普通的旧JavaScript查看我的解决方案.
假设是站点地图如此
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>http://example.com/</loc>
<lastmod>2014-07-07T14:09:27+00:00</lastmod>
<changefreq>always</changefreq>
</url>
Run Code Online (Sandbox Code Playgroud)
我可以使用下面的代码获取上面站点地图中的网址.
var page = require('webpage').create();
page.open('http://xxxx/static/sitemap/sitemap.xml', function() {
var content = page.content;
parser = new DOMParser();
xmlDoc = parser.parseFromString(content,'text/xml');
var loc = xmlDoc.getElementsByTagName('loc');
console.log(loc.length);
for(var i=0; i < loc.length; i++)
{
var url=loc[i].textContent;
}
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)