我的数据文件包含
等数据<li class="speaker_index js_only" id="si_4178514"
data-si_id="4178514" data-speaker_id="20864"
data-start_offset="9"
data-end_offset="125">
<h5>
<span class="icon-user">speaker: </span>James Brown
<span class="item_time"><span class="icon-time" title="time">, time: </span>00:01:56</span>
</h5>
<p>The chairman opens the meeting</p>
</li>
我会处理这种检索下面结果的数据
start=9
end=125
speaker=James Brown
text=The chairman opens the meeting
我可以查找各种符号并提取我需要的数据,但我想这可以通过结构化和一般方式(可能使用正则表达式)完成。)
最好的方法是创建一个对象数组(每个对象都有键start
,end
,speaker
,text
)。
使用JavaScript实现目标的最佳和最简单方法是什么?
答案 0 :(得分:1)
当您使用JavaScript时,您可以使用jQuery。
获取起始值的示例(请注意,您也可以传递包含HTML的字符串而不是选择器):
var $data = $("#data");
var $li = $("li", $data);
var startOffset = $li.attr("data-start_offset");
alert("start: " + startOffset);
答案 1 :(得分:0)
如果您的数据是有效的XML,那么您可以执行简单的XSLT转换,例如:
<xsl:template match="li">
start=<xsl:value-of select="@data-start_offset"/>
end=<xsl:value-of select="@data-end_offset"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="p">
text=<xsl:value-of select="."/>
</xsl:template>
如果你不想参与XSLT,那么按照@ Rhumborl的建议,你可以将HTML加载到浏览器中,这是所有最好的HTML解析器之后,然后访问你想要的以下(除非你是一个受虐狂或真的想支持过时的浏览器,否则不需要jQuery):
start = document.querySelect('li').getAttribute('data-start_offset');
或者如果您愿意
start = document.querySelect('li').dataset.start_offset
等等。或者,你可以像他提到的那样使用xpath:
start = document.evaluate('//li/@data-start_offset', ...);
您可以编写一个快速JS程序并在无头浏览器(如PhantomJS)下运行它,并将所需结果直接输出到控制台,如
console.log("start=", start);
并将其作为
运行phantomjs extract_data.js input.js > output