C # - Извлечь текст класса div с помощью HTMLAgility

c# css html html-agility-pack

Вопрос

У меня есть код на C #, где я хочу извлечь значение ниже (текст «Я хочу этот текст» в HTML-коде ниже). Я переформатировал HTML-код, чтобы сделать его легко читаемым.

<div class="paste-copy-url" style="margin:0 0 0 0;">
    <h4>My Stats:</h4>
    <div class="line">
        <div class="wrap-input">
            <input onclick="this.select();" value="I want this text" readonly="readonly">
        </div>
    </div>
    <h4>Website Link:</h4>
    <div class="line">
        <div class="wrap-input"><input onclick="this.select();" value="Some value" readonly="readonly">
        </div>
    </div>
</div>

Код, который я пробовал (он дает мне текст: «Ссылка на сайт:»):

var myvaluetoextract = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='paste-copy-url']");

Что я делаю не так? Могу ли я использовать этот подход для получения этого элемента (есть только один экземпляр класса div на странице)?

Принятый ответ

var input = htmlDocument.DocumentNode
           .SelectSingleNode("//div[@class='paste-copy-url']//div[@class='wrap-input']/input");
var yourText = input.Attributes["value"].Value;

Популярные ответы

Вы можете сделать это следующим образом:

var myvaluetoextract = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='paste-copy-url']//input");
var value = myvaluetoextract.GetAttributeValue("value", null);

//input означает, что вы ищете рекурсивные элементы input в поддереве div . GetAttributeValue - это помощник, который никогда не будет терпеть неудачу, даже если атрибут не существует (в этом случае, если вернет 2-й переданный параметр, который здесь равен null )



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow