【问题标题】:Is it safe to rely on an ASPX file being valid XML?依赖作为有效 XML 的 ASPX 文件是否安全?
【发布时间】:2011-07-13 01:34:05
【问题描述】:

如果一个 aspx 文件编译,是否可以安全地假定它是有效的 XML?

ASP.NET 是否通过将服务器控件解析为 XML 来工作?

【问题讨论】:

  • 您只是为了好玩,还是想解决某个特定问题?
  • @Tony Casale,我想将 ASPX 文件作为文本流加载并获取所有服务器控件。我想我可以用正则表达式试试这个,但我希望像 XElement.Parse().Descendants() 这样更简单。有什么想法吗?
  • 我不知道你在哪里看,但我相信你可以利用编译器中的解析器库来获取 ASPX 文件的 AST。不过,这可能比您希望投入的工作更多。我认为正则表达式解决方案是可行的。另一个建议可能是预处理您的 ASPX 文件以将任何不是服务器控件的内容转换为 CDATA 节点,然后您就可以使用 XElement 和朋友而不受惩罚。这些天我在 Linux 上,所以我不能自己在 .NET 中闲逛:)
  • 我看过那里 (stackoverflow.com/questions/5274272/…),但复杂性让我有点害怕。我一遍又一遍地发现,如果我必须认真思考一个问题,我可能做错了。我喜欢你关于将所有无效都转换为 CDATA 的想法,但现在我正在研究一种完全不同的方法来解决这个问题。
  • 祝你好运 - 如果你解决了问题,请告诉我们你是如何解决的!

标签: asp.net xml controls webforms asp.net-controls


【解决方案1】:

否 - 只有 asp 控件需要是有效的 XML。在 ASPX 文件中编写非 XHTML 代码是完全“合法的”。

【讨论】:

  • 我能否准确地解释为 asp:Content 中的所有内容都必须是有效的 XML?
  • 不,asp:Content 可以包含常规 HTML,即使它不是有效的 XML。
  • 不,它甚至可以有无效的html!
【解决方案2】:

我认为您不能假定它是有效的 Xml,原因很简单,它可以包含无效的 xml 或 xhtml 标记。

一个简单的例子:您可以为“break”标签写<br>,这将在所有浏览器中正常显示。有效的 Xhmtl 版本是 <br />,但这不是必需的。

【讨论】:

    【解决方案3】:

    XML != XHTML != ASPX

    您可以通过制作一个 DIV 并输入“Hello's to all you”来测试这一点,这将是有效的 ASP 和 XHTML,但不是有效的 XML:“Hello's to all你们

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 2021-10-29
      • 2013-10-10
      • 2021-06-14
      相关资源
      最近更新 更多