このhtmlスニペットから両方のソース属性を抽出したいと思います。
<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);
その後、次のコードを使用して、HtmlNodeCollectionaudio_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です。