Tengo un código en C # donde quiero extraer el siguiente valor (el texto "Quiero este texto" en el código HTML a continuación). He reformateado el código HTML para que sea fácil de leer.
<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>
El código que probé (me está dando el texto: "Enlace del sitio web:"):
var myvaluetoextract = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='paste-copy-url']");
¿Qué estoy haciendo mal? ¿Puedo usar este enfoque para obtener ese elemento (solo hay 1 instancia de la clase div en la página)?
var input = htmlDocument.DocumentNode
.SelectSingleNode("//div[@class='paste-copy-url']//div[@class='wrap-input']/input");
var yourText = input.Attributes["value"].Value;
Puedes hacerlo así:
var myvaluetoextract = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='paste-copy-url']//input");
var value = myvaluetoextract.GetAttributeValue("value", null);
//input
significa que busca elementos de input
en el subárbol del div
, recursivamente. GetAttributeValue
es un ayudante que nunca fallará, incluso si el atributo no existe (en este caso, si devuelve el segundo parámetro aprobado, que es null
aquí)