Xml非法字符过滤器

时间:2016-06-30 15:20:44

标签: c# xml

我正在使用c#。
我有以下的xml文件:

  require 'google/apis/drive_v2'
    auth = Signet::OAuth2::Client.new(
      token_credential_uri: 'https://accounts.google.com/o/oauth2/token',
      client_id:            "XXX-XXX",
      client_secret:        "XXX",
      refresh_token:        self.refresh_token # Get this from the omniauth strategy. 
    )

    auth.fetch_access_token!

    x = Google::Apis::DriveV2
    drive = x::DriveService.new
    drive.authorization = auth

files = drive.list_files

我怎样才能“过滤”所有非法字符? (<,>,“等......)
我需要编写自己的代码,如下所示:

<MyXml>
    <Element>&lt;x&gt; y&lt;/p&gt<Element>
    <Element>&amp;quot;my qoute&amp;quot;<Element>
</MyXml>

或者我还有其他办法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

XmlElement.InnerText已为您转义。在String escape into XML

回答了类似的问题

答案 1 :(得分:1)

应该做什么是修复生成此XML的内容,因为它错误地将“转义”XML作为文本插入到Element元素中,而不是添加子节点。

如果你不能这样做,那么一种可能的解决方法是识别那些应该包含XML的元素,解析内容并将结果元素添加为子元素:

var doc = XDocument.Parse(xml);

foreach (var element in doc.Descendants("Element"))
{
    var content = XElement.Parse("<root>" + element.Value + "</root>");
    element.ReplaceNodes(content.Nodes());
}