10

我有一个尝试使用 XDocument.Load 加载的 HTML 表单,但我收到以下错误:

' ' is an unexpected token. The expected token is ';'. Line 1257, position 66.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)

该代码只是调用以下内容:

XDocument xmlDoc = XDocument.Load(pageData.Stream);

pageData 是来自另一个系统的自定义对象,它正在输出数据流。我已经让它将 xml 导出回一个字符串,它看起来很好。

当我在 HTML 上检查该行时,它只是一个元素的结束标记。xml 异常给出的行/位置有多可靠?我只是将表单的源代码转储到 notepad++ 中进行验证,我看不出这会是个问题。

编辑:以下是错误前后的前几行。我已经标记了错误行。

                                        </p>
                        </td>
                    </tr>
                </table>

            </td>
        </tr>  <----Error Line
        <tr>
            <td>
                <div id="BusinessJustificationForm">
                    <table id="BusinessJustificationTable">
                        <tr>
                            <td class="seperator" colspan="7">
4

6 回答 6

19

我原来的问题是 URL 中没有&分号的 & 符号。;

例如:

<a href="http://www.something.com?id=123&name=456"></a>

幸运的是,该 URL 不需要在我的 HTML 代码中包含 & 位,因此我将其完全删除。我猜 URL 编码会有所帮助,&amp;如果需要,可以将其替换为。

于 2015-09-22T12:21:51.280 回答
9

此问题是由名称中包含空格的“名称”属性引起的。一旦我完成了整个事情并解决了这个问题,我就能够将 HTML 作为 XML 文档加载。

于 2013-09-06T13:34:23.567 回答
8

HTML 不同于 XML。XML 的规则比 HTML 严格得多。可能您的 HTML 不是格式良好的 XML。除非您可以确保您的 HTML 与 XHTML 兼容,否则您无法使用 XML 解析器解析 HTML。请改用HTML 敏捷包

于 2013-07-29T20:59:40.757 回答
2

您可以在 w3c 验证器http://validator.w3.org/中检查您的文档

于 2013-07-30T08:33:55.447 回答
1

另一件需要注意的事情是,XML 不允许没有值的 HTML 属性。

例如;

<input required name="Entity" />

不能作为 XML 文档加载,并且会引发错误:

'name' 是一个意外的标记。预期的标记是“=”。

因此更好地使用:

<input required="required" name="Entity" />
于 2018-06-20T00:11:28.267 回答
-1

该错误主要是描述您的属性名称包含空格,并且根据 XMLparser 是不允许的。您需要将其删除以符合 xml 标准。您应该改用 HTML 敏捷包 [ http://htmlagilitypack.codeplex.com/ ]。

于 2014-06-03T10:41:54.287 回答