我想从这个 html-snippet 中提取这两个源属性:
<audio controls>
<source src="horse.mp3" type="audio/mpeg">
<source src="horse.ogg" type="audio/ogg">
<embed height="50" width="100" src="horse.mp3">
</audio>
这是我所做的:
首先,我提取所有音频标签(包括您在上面看到的那个):
var audio_tags = HtmlDoc.DocumentNode.SelectNodes("//" + HTML.TAG_AUDIO);
之后,我尝试使用这段代码从 HtmlNodeCollection audio_tags 中提取源元素:
foreach (HtmlNode link in audio_tags)
{
if (link != null)
{
string url;
string type;
// select all source tags, see here for an example: http://www.w3schools.com/html/html_sounds.asp
if(link.HasChildNodes)
{
var children = link.ChildNodes;
if (children != null)
{
foreach (HtmlNode child in children)
{
Console.WriteLine(children[0].GetAttributeValue("type", "err").ToString() + "||" + children[0].OriginalName);
Console.WriteLine(children[1].GetAttributeValue("type", "errrr").ToString() + "||" + children[1].OriginalName);
...
写入行表明第一个元素不存在,因为打印了“err”。但它应该是第一个源元素。我会很高兴有一些提示。
编辑:
这些写入的输出是:
err||#text
audio/mpeg||source
和nr。儿童元素的数量为 2。