【问题标题】:load aspx file into xmldocument将 aspx 文件加载到 xmldocument
【发布时间】:2012-07-11 16:59:17
【问题描述】:

我希望能够将 aspx 页面加载到 XmlDocument 变量中。我怎么做?这是我尝试过的,它期望的 .xml 文件而不是 .aspx 页面。有什么方法可以将 aspx 页面即时转换为 xml 文档并加载它?谢谢

string filePath = @"C:\WebApplication1\webform4.aspx";
XmlDocument document = new XmlDocument();
document.Load(filePath);

我收到以下错误:

名称不能以 '%' 字符开头,十六进制值 0x25。第 1 行,位置 2。

【问题讨论】:

  • 有什么问题?你有例外吗?
  • 更新了实际的错误信息
  • 它不喜欢文件开头的<%@ Page .. %>。删除它,它应该加载。
  • 我希望能够按原样上传

标签: c# asp.net xml xmldocument


【解决方案1】:

您收到该错误的原因:

名称不能以“%”字符开头,十六进制值 0x25。第 1 行,位置 2。

是因为.aspx 页面通常不是有效的 XML。 ASP.NET .aspx 页面包含如下指令:

<%@ Page Language="C#" [possibly other stuff] %>

&lt;%@%&gt; 不是有效的 XML,这就是您无法加载原始 ASPX 页面的原因。

现在,即使您要删除这些指令,也很有可能除非您非常非常严格并且页面上的所有标记都是 XHTML,否则也不会加载。

您可能想尝试使用可通过 NuGet 下载的 HTML Agility Pack 加载页面(带有或不带有指令)。

【讨论】:

    【解决方案2】:

    XmlDocument 代表 Xml,所以如果你尝试加载一个 aspx,它会抛出错误,抱怨无效的 xml

    但如果来自 .aspx 的响应是例如 "&lt;?xml..... &gt;&lt;Employee&gt;dotNetMan&lt;/Employee&gt;" 作为字符串,那么它会起作用

    您必须将内容类型设置为text/xml

    这是一个很好的例子,如何从 aspx http://www.benhblog.com/2008/07/returning-xml-from-aspx-page.html 返回 xml

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多