xml - XElement.Load() 上出现 "undeclared prefix"错误的解决方法

标签 xml xelement

我正在拉取网站的来源。然后我想提取它的特定部分。我的意图是使用 LINQ-to-XML 执行此操作。

但是,我在解析源代码时遇到错误:

XElement source = XElement.Load(reader);

问题似乎是对我没有的 namespace 的引用。我收到错误消息:'addthis' 是未声明的前缀。第 130 行,位置 51。 由于这一行:

<div class="addthis_toolbox addthis_pill_combo" addthis:url="http://www.foo.com/foo">

如果我删除那个,其他的就会发生。

事情是,我只关心这个 XML 文件的一部分——我不需要能够解析整个文件。我只想要它在 XElement 中,这样我就可以找到它的一部分。我有办法绕过解析错误吗?我需要一个通用的解决方案 - 我想解析文件,而不管任何 undeclared prefix 错误。

谢谢

最佳答案

此 XML 无效。

为了使用命名空间前缀(例如 addthis: ),必须声明命名空间,写成 xmlns:addthis="some URI" .

一般来说,您不应该使用 XML 解析器来解析 HTML,因为 HTML 很可能是无效的 XML,出于这个原因和许多其他原因(未声明的实体、未转义的 JS、未闭合的标签)。
相反,使用 HTML Agility Pack .

关于xml - XElement.Load() 上出现 "undeclared prefix"错误的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557464/

相关文章:

c# - 如何使用字符串中的 XML 标记?

java - 基于给定 XSD 文件将 Java 对象转换为 XML 时出现问题

从 MySQL Workbench 导出 EER 图的 XML

java - struts2 迭代器捕获特定值

c# - 将任何用户输入添加为 XML 文档中的节点

c# - 如何只搜索 XDocument 的子项,而不是其所有后代?

xml - 从 XDocument 中删除 XElement

c# - StyleCop 使用 XDocument/XElement/XAttribute 愉快地创建 Xml

python - 使用 Python 编辑 XML 文件内容

java - 在 64 位 Windows 上找不到 PKCS#11 库