2015-01-28 2 views
0

Я получаю с страницы html url. в странице я получаю таблицу с горячим открытой <tr> тегаHmlAgilityPack исправить не открытый тег

<table class="transparent"> 
    <tr><td>Sąrašo eil. Nr.:</td><td>B-FA001</td></tr> 
    <td>Įrašymo į Sąrašą data:</td><td>2006-11-13</td></tr> 
</table> 

как исправить, чтобы

<table class="transparent"> 
    <tr><td>Sąrašo eil. Nr.:</td><td>B-FA001</td></tr> 
    <tr><td>Įrašymo į Sąrašą data:</td><td>2006-11-13</td></tr> 
</table> 

Я пытался сделать

private HtmlDocument GetHtmlDocument(string link) 
{ 
    string url = "http://195.182.67.7/paslaugos/administratoriai/bankroto-administratoriai/" + link; 
    var web = new HtmlWeb { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; 
    var doc = web.Load(url); 
    doc.OptionFixNestedTags = true; 
    doc.OptionAutoCloseOnEnd = true; 
    doc.OptionCheckSyntax = true; 

    // build a list of nodes ordered by stream position 
    NodePositions pos = new NodePositions(doc); 

    // browse all tags detected as not opened 
    foreach (HtmlParseError error in doc.ParseErrors.Where(e => e.Code == HtmlParseErrorCode.TagNotOpened)) 
    { 
     // find the text node just before this error 
     var last = pos.Nodes.OfType<HtmlTextNode>().LastOrDefault(n => n.StreamPosition < error.StreamPosition); 
     if (last != null) 
     { 
      // fix the text; reintroduce the broken tag 
      last.Text = error.SourceText.Replace("/", "") + last.Text + error.SourceText; 
     } 
    } 
    doc.Save(Console.Out); 
    return doc; 
} 

, но не исправить

+0

Попробуйте следующее: http://stackoverflow.com/questions/22661640/how-to-fix-ill-formed-html-with-html-agility-pack – user1071979

+0

Я попытался, но, возможно, что-то плохое сделал. – maksim

ответ

0

для этще проблема: вы можете сделать замену простого регулярного выражения:

string wrong = "<table class=\"transparent\"><tr><td>Sąrašo eil. Nr.:</td><td>B-FA001</td></tr><td>Įrašymo į Sąrašą data:</td><td>2006-11-13</td></tr></table>"; 
Regex reg = new Regex(@"(?<!(?:<tr>)|(?:</td>))<td>"); 
string right = reg.Replace(wrong, "<tr><td>"); 
Console.WriteLine(right); 
+0

спасибо. Ты помог мне. мне хорошо, что мне нужно – maksim

Смежные вопросы