加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用.NET中的XmlReader解压缩XML实体?

发布时间:2020-12-16 07:42:41 所属栏目:百科 来源:网络整理
导读:我试图在.NET(C#)中的字符串中解压缩 XML实体,但是我似乎没有使它正常工作. 例如,如果我有字符串AT amp; T,它应该被翻译成AT T. 一种方法是使用HttpUtility.HtmlDecode(),但这是HTML. 所以我有两个问题: 使用HttpUtility.HtmlDecode()解码XML实体是否安全?
我试图在.NET(C#)中的字符串中解压缩 XML实体,但是我似乎没有使它正常工作.

例如,如果我有字符串AT& amp; T,它应该被翻译成AT& T.

一种方法是使用HttpUtility.HtmlDecode(),但这是HTML.

所以我有两个问题:

>使用HttpUtility.HtmlDecode()解码XML实体是否安全?
>如何使用XmlReader(或类似的东西)这样做?我已经尝试了以下,但总是返回一个空字符串:

static string ReplaceEscapes(string text)
{
    StringReader reader = new StringReader(text);

    XmlReaderSettings settings = new XmlReaderSettings();

    settings.ConformanceLevel = ConformanceLevel.Fragment;

    using (XmlReader xmlReader = XmlReader.Create(reader,settings))
    {
        return xmlReader.ReadString();
    }
}
你的#2解决方案可以工作,但你需要调用xmlReader.Read(); (或xmlReader.MoveToContent();)之前的ReadString.

我想#1也是可以接受的,即使有这样的边缘案例,如& reg;这是一个有效的HTML实体,但不是一个XML实体 – 你的unescaper应该怎么做?抛出异常作为一个正确的XML解析器,或者只是返回“?”作为HTML解析器会做什么?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读