我正在使用Xml和Linq执行XHTML文档上的XML操作。
当将其转换回字符串以输出到浏览器时,创建XElement时渲染脚本标记以其原始提供的形式<script />
。
这会导致大多数市场上的浏览器无法正确处理它。
我想以这种方式执行XElement到String的转换,使它以这种方式输出脚本标记<script></script>
有人能帮我吗?先感谢您 :)
第一次编辑
提供更多信息,数据来自MSSQL 2008R2数据库中的xml字段。
加载方式为
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js" />
第二次编辑 工作样例
using System;
using System.Linq;
using System.Xml.Linq;
namespace Test1
{
class Test1
{
static void Main(string[] args)
{
XElement element = XElement.Parse("<div><script /><script>Test</script></div>");
var EmptySet = (from e in element.DescendantsAndSelf()
where e.IsEmpty
select e);
foreach(XElement e in EmptySet)
{
e.Value = String.Empty;
}
Console.WriteLine(element.ToString(SaveOptions.None));
}
}
}
以及它的结果。
<div>
<script></script>
<script>Test</script>
</div>
<script />
- 它忠实地格式化了来自数据库的 XML。 - Jon Skeetdoc.Descendants().Where(x => x.Value == "")
这样的代码应该可以工作。在修改元素之前,您可能需要将查询实例化(转换为列表)。请注意,即使没有子元素,获取Value
属性也会返回 "" 而不是 null,至少我是这样看的。 - Jon Skeetvar emptySet = element.DescendantsAndSelf().Where(e => e.IsEmpty).ToList();
- Jon Skeet