6

当我意识到我需要为大约 50 个 XHTML 页面创建一个索引时,这些页面将来可能会被添加/删除/重命名/移动,我想“没问题——我将使用 LINQ to XML 编写一个快速索引生成器,因为XHTML 绝对算作 XML”。

当然,当我尝试运行它时,我发现 XLINQ 会阻塞像   这样的 XHTML 实体。我通过使用以下算法解决了这个问题:

  1. 将 XHTML 文件读入字符串。
  2. 在该字符串上使用正则表达式搜索和替换将一个部分添加到定义所有相关实体的 DOCTYPE 中(因为我只关心我读取的文件中的“标题”属性,而我的输出文件现在不使用任何实体,它只是将它们全部设置为空白,但我稍后可能会添加实际值)。
  3. 将结果解析为 XDocument。

要保存文件,我会做相反的事情:

  1. 将 XDocument 保存为字符串。
  2. 去掉实体定义。
  3. 保存到文件。

我的问题是,有没有我可以使用的库(尤其是内置的 .Net 库)将 XHTML 文件读入 XDocuments?我编写的代码已经完成了它的目的(生成当前索引并测试生成器程序的其余部分),如果其他人已经编写并测试了相同的东西,我真的不想花时间测试它。

非常感谢你们的时间,
Ria。

编辑:非常感谢;这行得通!当我保存 XHTML 时,我仍然需要做一些字符串处理(猜想这个库并不是真的为此而设计的:))而且我不得不稍微摆弄一下 Agility Pack 的源代码,以让它停止不加选择地粘贴 CDATA 部分围绕每个样式属性的内部(即使已经存在一个),但这就是开源的重点,对吗?

4

1 回答 1

4

这可能会有所帮助:LINQ 和 Lambda,第 3 部分:Html Agility Pack to LINQ to XML Converter

于 2009-01-28T11:39:48.023 回答