我有一个.js文件。这是一个javascript文件,文本如下。我想提取所有的href URL并将它们添加到循环内的变量中以进一步处理。我怎样才能做到这一点?非常感谢。
document.write('<tr bgcolor="#6691BC">'); document.write('<td
width="15" height="25"> </td>'); document.write('<td width="690"
height="25" class="headertext">');
document.write('<a href="../myspace.com/index.html" class="headerLink"
style="color: #ffffff;">My Space</a> | ');
document.write('<a href="../technotes.com/index.html"
class="headerLink" style="color: #ffffff;">Tech
Notes</a> | ');
document.write('<td width="15" height="25"> </td>');
document.write('</tr>');
答案 0 :(得分:1)
我会采用不同的方法 - 首先将您的html转换为单个xhtml字符串(请注意缺少</td>
,而&
需要转义为&
)
var xhtml = [
'<tr bgcolor="#6691BC">',
'<td width="15" height="25">&nbsp;</td>',
'<td width="690" height="25" class="headertext">',
'<a href="../myspace.com/index.html" class="headerLink" style="color: #ffffff;">My Space</a>&nbsp;&nbsp;|',
'<a href="../technotes.com/index.html" class="headerLink" style="color: #ffffff;">Tech Notes</a>'
'</td>',
'<td width="15" height="25"><a id="JustAnAnchor">Anchor</a></td>',
'</tr>'].join("");
document.write(xhtml);
然后,您需要solve the challenge在javascript中应用xslt转换。
以下xslt将从所有href
标记中提取<a href>
并将它们转储到逗号分隔列表中,然后您可以在javascript中使用它(不应该remove the extraneous last trailing comma })
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="//a[@href]"></xsl:apply-templates>
</xsl:template>
<xsl:template match="a">'<xsl:value-of select="@href"/>',</xsl:template>
</xsl:stylesheet>
输出:
'../myspace.com/index.html','../technotes.com/index.html',
答案 1 :(得分:0)
XSLT无法轻松解析Javascript。这是工作的错误工具。
以下是您可以采取的一些方法:
(1)运行javascript,捕获生成的文档,然后使用XSLT。如果文档格式不正确,这可能会很麻烦。
(2)使用正则表达式,例如grep,perl -e,Javascript匹配函数
(3)运行javascript,然后使用document.querySelectorAll('* [href]')来获取所有带有href和工作表单的元素