如何避免System.Xml.Linq.XElement转义HTML内容? [英] How to avoid System.Xml.Linq.XElement escaping HTML content?

查看:700
本文介绍了如何避免System.Xml.Linq.XElement转义HTML内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的XElement对象建立在$ C $一些HTML C-背后的ASP.NET页面上。

我可能或不可能一些XAttributes添加到此的XElement我走,以下列方式:

  VAR elmnt =新的XElement(格,
     新XAttribute(ID,myDiv),
     );

现在,如果我想添加一些内容到的 myDiv 的包含HTML时,会自动的XElement这个逃脱这在我的情况,是不可取的。

所以,如果我有:

  VAR elmnt =新的XElement(格,
     新XAttribute(ID,myDiv),
     <跨度ID ='内容'>的Hello World< / SPAN>中
     );

然后我用下面的code渲染成一个占位符对象是:

  myPlaceholder.Controls.Add(新System.Web.UI.WebControls.Literal的{text = elmnt.CreateNavigator()OuterXml。});

在页面加载,源表明,内里的内容 elmnt 的已经逃脱,并具有以下格式在页面的源代码:

 &放大器; LT;跨度ID ='内容'和; GT;的Hello World&放大器; LT; / SPAN&放大器; GT;

由于我这里编译XML是有效的HTML,和内含量也有效的HTML,我该怎么告诉父母的XElement对象的的逃避内心的内容?我怎么能离开其原生格式?


解决方案

  VAR elmnt =新的XElement(格,
   新XAttribute(ID,myDiv),
   新XRaw(<跨度ID ='内容'>的Hello World< / SPAN>中)
 );
公共类XRaw:XTEXT
{
  公共XRaw(字符串文本):基地(文本){}
  公共XRaw(XTEXT文本):基地(文本){}  公共覆盖无效的writeTo(System.Xml.XmlWriter作家)
  {
    writer.WriteRaw(THIS.VALUE);
  }
}

I'm using the XElement object to build some HTML in the code-behind on an ASP.NET page.

I may or may not add some XAttributes to this XElement as I go along, in the following fashion:

var elmnt = new XElement("div",
     new XAttribute("id", "myDiv"),
     );

Now, if I want to add some content into myDiv which contains HTML, the XElement automatically escapes this which, in my situation, is undesirable.

So if I have:

var elmnt = new XElement("div",
     new XAttribute("id", "myDiv"),
     "<span id='content'>hello world</span>"
     );

And then I render this into a Placeholder object using the following code:

myPlaceholder.Controls.Add(new System.Web.UI.WebControls.Literal { Text = elmnt.CreateNavigator().OuterXml });

When the page loads, the source reveals that the inner content inside elmnt has been escaped, and has the following format in the page's source:

&lt;span id='content'&gt;hello world&lt;/span&gt;

Given that the XML I'm compiling here is valid HTML, and the inner content is also valid HTML, how can I tell the XElement parent object to not escape the inner content? How can I leave it in its native format?

解决方案

 var elmnt = new XElement("div",
   new XAttribute("id", "myDiv"),
   new XRaw("<span id='content'>hello world</span>")
 );


public class XRaw : XText
{
  public XRaw(string text):base(text){}
  public XRaw(XText text): base(text){}

  public override void WriteTo(System.Xml.XmlWriter writer)
  {
    writer.WriteRaw(this.Value);
  }
}

这篇关于如何避免System.Xml.Linq.XElement转义HTML内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆