Soy nuevo en XML/HTML-parsing. Ni siquiera sabes las palabras correctas para hacer una búsqueda adecuada de duplicados.Valor de lectura del nodo HTML
que tienen este archivo HTML que se parece a esto:
<body id="s1" style="s1">
<div xml:lang="uk">
<p begin="00:00:00" end="00:00:29">
<span fontFamily="SchoolHouse Cursive B" fontSize="18">I'm great!</span>
</p>
Ahora necesito 00:00:00
, 00:00:29
y I'm great!
de ella. Podía leer así:
XmlTextReader reader = new XmlTextReader(file);
while (reader.Read())
{
if (reader.NodeType != XmlNodeType.Element)
continue;
if (reader.LocalName != "p")
continue;
var a = reader.GetAttribute(0);
var b = reader.GetAttribute(1);
if (reader.LocalName == "span")
{
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode elem = doc.DocumentElement.FirstChild;
var c = elem.InnerText;
}
}
consigo los valores de las variables a
, y b
c
. Pero hubo un ligero cambio en el formato HTML. Ahora el HTML se parece a esto:
<body id="s1" style="s1">
<div xml:lang="uk">
<p begin="00:00:00" end="00:00:29">I'm great! </p>
En este escenario ¿Cómo analizo a cabo 00:00:00
, 00:00:29
y I'm great!
? He intentado esto:
XmlTextReader reader = new XmlTextReader(file);
while (reader.Read())
{
if (reader.NodeType != XmlNodeType.Element)
continue;
if (reader.LocalName != "p")
continue;
var a = reader.GetAttribute(0);
var b = reader.GetAttribute(1);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlNode elem = doc.DocumentElement.FirstChild;
var c = elem.InnerText;
}
Pero me sale este error: This document already has a 'DocumentElement' node.
en la línea doc.Load(reader)
. ¿Cómo leer correctamente y qué está causando el problema? Estoy usando .NET 2.0
Eche un vistazo a [html agility pack] (https://htmlagilitypack.codeplex.com/), parece lo que necesita para analizar html. – oleksii
HTML! = XML .... –
@oleksii ¿Debo usar lib de terceros cuando hay mucho en System.Xml? Además, no estoy haciendo nada relacionado con html – nawfal