Html Agility Pack - < option>内部文本 [英] Html Agility Pack - <option> inner text

查看:90
本文介绍了Html Agility Pack - < option>内部文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对这个html有问题:

 < select id =attribute1021class =required-entry super-属性选择name =super_attribute [1021]> 
< option value =>选择一个选项...< / option>
< option value =281> 001美莱克< / option>
< option value =280> 002 Taronja< / option>
< option value =289> 003 Lill< / option>
< option value =288> 004Chèn< / option>
< option value =287> 005新增< / option>
< option value =286> 006 Iskia< / option>
< option value =285> 007 Milele< / option>
< option value =284> 008 Cali< / option>
< option value =283> 009 Odessa< / option>
< option value =282> 010玛瑙斯< / option>
< option value =303> 011 Nartiss< / option>
< option value =302> 012 Curitiba< / option>
< option value =301> 013波哥大< / option>
< option value =300> 014Solèy< / option>
< option value =299> 015坎皮纳斯< / option>
< option value =298> 016 Formosa< / option>
< option value =297> 017 Valencia< / option>
< option value =296> 018 Candu< / option>
< option value =295> 019Medellín< / option>
< option value =294> 020 Incubo< / option>
< option value =293> 021 Belisama< / option>
< option value =292> 022 Amo< / option>
< option value =291> 023 Chimaira< / option>
< option value =290> 024 Matanza< / option>
< option value =319> 025 Baltimore< / option>
< / select>

在C#中使用此代码



<$ p $ (//选择[@ class ='required-entry super-attribute-select'] / option))
{
sb.Append(V)
.Append(y)
.Append(>)
.Append(node.InnerText)
.Append( / V)
.Append(y)
.Append(>)
.AppendLine();
}

但在内部文本中只有选择一个选项...。



任何想法如何解决它? Html Agility Pack默认情况下,选项标签为空。要让它工作,你需要从留空的元素列表中删除选项 - 标签。



在加载Html之前,请将以下somwhere放在一起。

  HtmlNode.ElementsFlags.Remove(option); 

var dok = new HtmlDocument();
dok.Load(option.htm);
var sb = new StringBuilder();
var y =;
foreach(HtmlNode node in dok.DocumentNode.SelectNodes(// select [@ class ='required-entry super-attribute-select'] / option))
{
sb。 Append(V)
.Append(y)
.Append(>)
.Append(node.InnerText)
.Append(/ V)
.Append(y)
.Append(>)
.AppendLine();
}


I have problem with this html:

<select id="attribute1021" class="required-entry super-attribute-select" name="super_attribute[1021]">
<option value="">Choose an Option...</option>
<option value="281">001 Melaike</option>
<option value="280">002 Taronja</option>
<option value="289">003 Lill</option>
<option value="288">004 Chèn</option>
<option value="287">005 Addition</option>
<option value="286">006 Iskia</option>
<option value="285">007 Milele</option>
<option value="284">008 Cali</option>
<option value="283">009 Odessa</option>
<option value="282">010 Manaus</option>
<option value="303">011 Nartiss</option>
<option value="302">012 Curitiba</option>
<option value="301">013 Bogota</option>
<option value="300">014 Solèy</option>
<option value="299">015 Campinas</option>
<option value="298">016 Formosa</option>
<option value="297">017 Valencia</option>
<option value="296">018 Candu</option>
<option value="295">019 Medellín</option>
<option value="294">020 Incubo</option>
<option value="293">021 Belisama</option>
<option value="292">022 Amo</option>
<option value="291">023 Chimaira</option>
<option value="290">024 Matanza</option>
<option value="319">025 Baltimore</option>
</select>

With this code in C#

foreach (HtmlNode node in dok.DocumentNode.SelectNodes("//select[@class='required-entry super-attribute-select']/option"))
{
    sb.Append("V")
      .Append(y)
      .Append(">")
      .Append(node.InnerText)
      .Append("/V")
      .Append(y)
      .Append(">")
      .AppendLine();
}

But in inner text is only "Choose an Option..." .

Any idea how to fix it ?

解决方案

Html Agility Pack by default leaves option-Tags empty. To have it work you need remove the option-Tag from the list of elements that are left empty.

Just put the following somwhere before you load the Html.

HtmlNode.ElementsFlags.Remove("option");

var dok = new HtmlDocument();
dok.Load("option.htm");
var sb = new StringBuilder();
var y = "";
foreach (HtmlNode node in dok.DocumentNode.SelectNodes("//select[@class='required-entry super-attribute-select']/option"))
{
 sb.Append("V")
      .Append(y)
      .Append(">")
      .Append(node.InnerText)
      .Append("/V")
      .Append(y)
      .Append(">")
      .AppendLine();
}

这篇关于Html Agility Pack - &lt; option&gt;内部文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆