如何避免System.Xml.Linq.XElement转义HTML内容? [英] How to avoid System.Xml.Linq.XElement escaping HTML content?
问题描述
我使用的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:
<span id='content'>hello world</span>
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屋!