我正在写一个工具,也可以在C#中翻译html文件内容。
我正在使用HtmlAgilityPack
处理html节点,并使用YandexTranslateCSharpSdk
来翻译文本。(我是新遇到的)
我的算法是在任何html节点中获取文本并将其替换为已翻译。
一个问题是,当我使用HtmlAgilityPack
时,node.innerText
返回了html标记中的所有内容,另外一个问题是,当我从节点获取文本并使用进行翻译时,我不知道要加快翻译过程在线工具肯定需要很多时间。
代码看起来像这样:
foreach (var node in nodes)
{
//i++;
if (string.IsNullOrWhiteSpace(node.InnerText) || string.IsNullOrEmpty(node.InnerText))
continue;
var trans = await wrapper.TranslateText(node.InnerText.Replace("\n", "").Trim(), "en-fr");
if (node.ChildNodes.Count > 0)
{
node.ReplaceChild(doc.CreateTextNode(trans), node.ChildNodes.First());
}
else
{
node.AppendChild(doc.CreateTextNode(trans));
}
}
在HtmlAgilityPack中,node.innerText
是只读的,不能使用node.innerText="some text"
来解决,我使用了以下代码:
if (node.ChildNodes.Count > 0)
{
node.ReplaceChild(doc.CreateTextNode(trans), node.ChildNodes.First());
}
else
{
node.AppendChild(doc.CreateTextNode(trans));
}
但是不行。