在运行时从 XML 检索和处理服务器端值

本文关键字:处理 服务器端 检索 运行时 XML | 更新日期: 2023-09-27 18:36:22

我正在尝试实现一种解决方案来更新用户控件显示的内容,而无需重新发布用户控件本身。UC 从外部文件中获取 xml 作为其内容,而不是将内容存储在控件中,因此 xml 是重新发布的内容,而不是 UC。

问题是我还需要内容包含内联变量,例如 <% =myvariable %>。有没有办法检索 xml 然后在运行时运行它,而不是将其视为文本?

下面只是一个基本的例子,只有与这个问题相关的基础知识,而不是页面上代码的完整范围,但希望它足以阐明我所问的内容。除了"Response.Write(xmlcontent);"之外,还有没有办法让检索 xml 的值在运行时像页面的"本机"一样运行并处理该内联变量?

用户控制:

<script runat="server">
string xmlcontent = "";
protected override void OnLoad(EventArgs e)
{
    try
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(Server.MapPath("/usercontrols/xml/test.xml"));
        xmlcontent = doc.SelectSingleNode("content").InnerText;
    }
    catch
    {
    }
}
</script>
<%if (!string.IsNullOrEmpty(xmlcontent))
 {
     Response.Write(xmlcontent);
 } %>

.XML:

<content>
<![CDATA[<div>This is the content. The next word is a C# variable <% =variabletest %>.</div>]]>
</content>

在运行时从 XML 检索和处理服务器端值

试试这个:

<script runat="server">
        string xmlcontent = "";
        protected override void OnLoad(EventArgs e)
        {
            try
            {
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.Load(Server.MapPath("/usercontrols/xml/test.xml"));
                ltrl.Text = String.Format(doc.SelectSingleNode("content").InnerText, variabletest);
            }
            catch (Exception ex)
            {
                ltrl.Text = ex.Message;
            }
        }
 </script>

<div>
    <asp:Literal runat="server" ID="ltrl" />
</div>

您可以使用 String.Format 传递 var 值并将其与 xml 内容合并。定义文本控件以将内容写入页面。