Я знаю, что могу загрузить приведенный ниже текстовый код в документ HtmlAgilityPack и получить внутренний текст
Однако я хотел бы получить внутренний текст в формате basi c. Из формата basi c я имею в виду только 2, которые выделены жирным шрифтом и itali c
Возможно ли получить внутренний текст с таким форматированием basi c?
Вот пример кода
<div class="mw-parser-output"><p><strong class="Latn headword" lang="en">API</strong> (<i>third-person singular simple present</i> <b class="Latn form-of lang-en 3|s|pres-form-of" lang="en"><a href="/wiki/APIs#English" title="APIs">APIs</a></b>, <i>present participle</i> <b class="Latn form-of lang-en pres|ptcp-form-of" lang="en"><a href="/wiki/oning#English" title="oning">oning</a></b>, <i>simple past and past participle</i> <b class="Latn form-of lang-en past|and|past|ptcp-form-of" lang="en"><a href="/wiki/oned#English" title="oned">oned</a></b>) </p> <!-- NewPP limit report Parsed by mw1286 Cached time: 20200201203044 Cache expiry: 2592000 Dynamic content: false Complications: [] CPU time usage: 0.080 seconds Real time usage: 0.124 seconds Preprocessor visited node count: 35/1000000 Preprocessor generated node count: 0/1500000 Post‐expand include size: 1028/2097152 bytes Template argument size: 2/2097152 bytes Highest expansion depth: 5/40 Expensive parser function count: 0/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 0/5000000 bytes Number of Wikibase entities loaded: 0/400 Lua time usage: 0.058/10.000 seconds Lua memory usage: 2.21 MB/50 MB --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 117.762 1 Template:en-verb 100.00% 117.762 1 -total --> </div>
Это выглядит так в браузере
Итак, вывод, который я хотел бы получить, выглядит примерно так
<b>API</b> (<i>third-person singular simple present</i> <b>APIs</b>, <i>present participle</i> <b>oning</b>, <i>simple past and past participle</i> <b>oned</b>)
c#. net 4.8 +
Я пришел к следующему решению, но мне было бы интересно, есть ли более эффективное решение
HtmlDocument hdDoc = new HtmlDocument();
hdDoc.LoadHtml(File.ReadAllText("test.txt"));
var query = hdDoc.DocumentNode.Descendants().OfType<HtmlCommentNode>().ToList();
foreach (var comment in query)
{
comment.Remove();
}
List<HtmlNode> lstNodesTobeRemoved = new List<HtmlNode>();
List<string> lstWhichElementsTobeRemoved = new List<string> { "a", "div","p" };
List<string> lstWhichAttributesToBeRemoved = new List<string> { "class", "lang" };
foreach (var vrNode in hdDoc.DocumentNode.Descendants())
{
foreach (var vrElementName in lstWhichElementsTobeRemoved)
{
if (vrNode.Name==vrElementName)
lstNodesTobeRemoved.Add(vrNode);
}
foreach (var vrAttributeName in lstWhichAttributesToBeRemoved)
{
vrNode.Attributes.Remove(vrAttributeName);
}
}
foreach (var item in lstNodesTobeRemoved)
{
HtmlNode tempHdNode = hdDoc.DocumentNode.FirstChild;
bool blRemove = false;
foreach (var vrNode in hdDoc.DocumentNode.Descendants())
{
if(vrNode==item)
{
tempHdNode = vrNode;
blRemove = true;
break;
}
}
if (blRemove)
tempHdNode.ParentNode.RemoveChild(tempHdNode, true);
}
string srHtml= hdDoc.DocumentNode.OuterHtml;
Вывод мое решение
<strong>API</strong> (<i>third-person singular simple present</i> <b>APIs</b>, <i>present participle</i> <b>oning</b>, <i>simple past and past participle</i> <b>oned</b>)