当我意识到我需要为大约50个XHTML页面创建索引时,这些页面可能在将来被添加/删除/重命名/移动,我想,“没问题 - 我将使用LINQ to XML编写一个快速的索引生成器,因为XHTML绝对可以视为XML”。
当然,当我尝试运行它时,我发现XLINQ会因为XHTML实体(如 )而出错。我通过使用以下算法解决了这个问题:
1. 将XHTML文件读入字符串中。 2. 在该字符串上使用正则表达式搜索和替换,以在DOCTYPE中添加一个定义所有相关实体的部分(因为我只关心读取的文件中的“title”属性,而我的输出文件现在不使用任何实体,只是将它们全部设置为空白,但我以后可能会添加实际值)。 3. 将结果解析为XDocument。
为了保存文件,我执行以下操作:
1. 将XDocument保存到字符串中。 2. 剥离实体定义。 3. 保存到文件。
我的问题是,是否有任何库(特别是内置的.Net库)可以将XHTML文件读入XDocuments中?我编写的代码已经达到了目的(生成当前索引并测试生成器程序的其余部分),如果有人已经编写并测试过相同的代码,我真的不想浪费时间测试它。
感谢您的时间,
Ria。
编辑:非常感谢您,这很有效!当我保存XHTML时仍然需要进行一些字符串处理(猜测该库并不是为此而设计的:)),我不得不略微调整Agility Pack的源代码以使其停止在每个样式属性的内部 indiscriminately sticking CDATA 部分(即使已经存在一个)。但这就是开放源代码的意义,对吧?
当然,当我尝试运行它时,我发现XLINQ会因为XHTML实体(如 )而出错。我通过使用以下算法解决了这个问题:
1. 将XHTML文件读入字符串中。 2. 在该字符串上使用正则表达式搜索和替换,以在DOCTYPE中添加一个定义所有相关实体的部分(因为我只关心读取的文件中的“title”属性,而我的输出文件现在不使用任何实体,只是将它们全部设置为空白,但我以后可能会添加实际值)。 3. 将结果解析为XDocument。
为了保存文件,我执行以下操作:
1. 将XDocument保存到字符串中。 2. 剥离实体定义。 3. 保存到文件。
我的问题是,是否有任何库(特别是内置的.Net库)可以将XHTML文件读入XDocuments中?我编写的代码已经达到了目的(生成当前索引并测试生成器程序的其余部分),如果有人已经编写并测试过相同的代码,我真的不想浪费时间测试它。
感谢您的时间,
Ria。
编辑:非常感谢您,这很有效!当我保存XHTML时仍然需要进行一些字符串处理(猜测该库并不是为此而设计的:)),我不得不略微调整Agility Pack的源代码以使其停止在每个样式属性的内部 indiscriminately sticking CDATA 部分(即使已经存在一个)。但这就是开放源代码的意义,对吧?
XDocument
。 - Markus Jarderot