我正在尝试使用 HtmlAgilityPack 解析 EPUB 文档(用 VersOne.Epub 打开),它开始工作,但当我测试更多时,它开始在一些书中丢失正文。
由于最初我测试的是英语书籍,问题首先出现在一本俄语书籍上,我认为字母表或编码是问题所在,但事实似乎并非如此,因为我设法将正文放入其中通过“/html/body”或“//body”进行预订。但这在最新的版本中不起作用。例如,这个简短的部分:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title/>
<link rel="stylesheet" href="style.css" type="text/css"/>
<link rel="stylesheet" href="style.css" type="text/css"/>
</head>
<body class="z">
<span id="id154"><div class="title3">
<p class="p">295</p>
</div><p class="p1">От слова bando - публичное оповещение - произошло слово bando-lero, означавшее разбойника, голова которого была оценена.</p></span>
</body>
</html>
Epub 库可以很好地获取字符串。 html 标签已关闭,请检查。 body 标签已关闭,请检查。编码已给出。 HtmlAgilityPack 返回 null。可能是什么问题?
以防万一,这就是我正在做的:
HtmlDocument htmlDocument = new();
htmlDocument.LoadHtml(textContentFile.Content);
var bodyNode = htmlDocument.DocumentNode.SelectSingleNode("//body");
textContentFile来自Epub阅读顺序。
尝试以下操作:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string xml = @"<?xml version=""1.0"" encoding=""UTF - 8""?>
<html xmlns = ""http://www.w3.org/1999/xhtml"" >
<head>
<title/>
<link rel = ""stylesheet"" href = ""style.css"" type = ""text/css"" />
<link rel = ""stylesheet"" href = ""style.css"" type = ""text/css"" />
</head >
<body class=""z"">
<span id = ""id154"" >
<div class=""title3"">
<p class=""p"">295</p>
</div>
<p class=""p1"">От слова bando - публичное оповещение - произошло слово bando-lero, означавшее разбойника, голова которого была оценена.</p></span>
</body>
</html>
";
XDocument doc = XDocument.Parse(xml);
XNamespace ns = doc.Root.GetDefaultNamespace();
XElement body = doc.Descendants(ns + "body").FirstOrDefault();
}
}
}