C# HmlAgilityPack修复未打开标记
我从url html页面获取。 在第页中,我得到了带有热打开的C# HmlAgilityPack修复未打开标记,c#,html,.net-4.5,html-agility-pack,C#,Html,.net 4.5,Html Agility Pack,我从url html页面获取。 在第页中,我得到了带有热打开的标记的表 <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 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>
萨拉索埃尔。编号:B-FA001
ĮrašymoįSąrašą数据:2006-11-13
如何修复
<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>
萨拉索埃尔。编号:B-FA001
ĮrašymoįSąrašą数据:2006-11-13
我试着去做
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;
}
private HtmlDocument GetHtmlDocument(字符串链接)
{
字符串url=”http://195.182.67.7/paslaugos/administratoriai/bankroto-administratoriai/“+链接;
var web=new HtmlWeb{AutoDetectEncoding=false,OverrideEncoding=Encoding.UTF8};
var doc=web.Load(url);
doc.OptionFixNestedTags=true;
doc.OptionAutoCloseOnEnd=true;
doc.OptionCheckSyntax=true;
//构建按流位置排序的节点列表
节点位置pos=新节点位置(doc);
//浏览检测到未打开的所有标记
foreach(doc.ParseErrors.Where(e=>e.Code==HtmlParseErrorCode.TagNotOpened)中的HtmlParseError错误)
{
//查找此错误之前的文本节点
var last=pos.Nodes.OfType().LastOrDefault(n=>n.StreamPosition
但不修复对于此特定问题,您可以执行简单的正则表达式替换:
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);
string-error=“Sąrašo eil.编号:B-FA001ĮrašymoįSąraš261;š数据:2006-11-13”;
正则表达式reg=新正则表达式(@“(?)|(?:)”);
字符串right=reg.Replace(错误,“”);
控制台。WriteLine(右);
试试这个:我试过了,但可能是做了坏事。