我有一个HTML表单,我正在尝试使用XDocument.Load加载,我收到以下错误:
' ' 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">
答案 0 :(得分:11)
我在网址中发现的问题是&符号&
,其中分号;
没有跟随它。
例如:
<a href="http://www.something.com?id=123&name=456"></a>
幸运的是,URL不需要在我的HTML代码中包含&符号,所以我完全删除了它。我猜URL编码会有所帮助,如果需要,可将其替换为&
。
答案 1 :(得分:8)
此问题是由名称包含空格的“名称”属性引起的。一旦我完成了整个过程并解决了这个问题,我就能够将HTML加载为XML文档。
答案 2 :(得分:6)
HTML与XML不同。 XML比HTML有更严格的规则。可能你的HTML不是格式良好的XML。除非您可以确保HTML符合XHTML,否则无法使用XML解析器解析HTML。请改用HTML Agility Pack。
答案 3 :(得分:2)
您可以在w3c验证器http://validator.w3.org/
中查看您的文档答案 4 :(得分:0)
另一件事要看, XML不允许没有值的HTML属性。
例如;
<input required name="Entity" />
无法作为XML文档加载,并且会引发错误,如下所示:
“名称”是意外令牌。预期的令牌为“ =”。
因此更好地使用:
<input required="required" name="Entity" />
答案 5 :(得分:-1)
该错误主要描述您的属性具有包含空格的名称,并且根据XMLparser不允许使用该属性。您需要将其删除以符合xml标准。您应该使用HTML敏捷包[http://htmlagilitypack.codeplex.com/]代替。