【问题标题】:Xml illegal characters filterxml非法字符过滤器
【发布时间】:2016-06-30 15:20:44
【问题描述】:

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

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

如何“过滤”所有非法字符? (,,等等。)
我需要编写自己的代码,如下所示:

myElement.InnerText.Replace("&lt","<");

或者我有其他方法可以做到这一点?

谢谢!

【问题讨论】:

  • 为什么你认为这些是非法字符而不是特殊字符的有效的 XML 表示?你想做什么?这些角色是如何在那里结束的?您是否在 XML 或 HTML sn-p 上使用了 HTML 编码?这个文件是怎么生成的?如果不是您所期望的,您应该修复生成文件的代码
  • 我有另一个应用程序为我创建 .xml 文件。我想将 xml 文件替换为 &lt 到
  • 显然,否则你将无法写&lt;Element&gt;。如果Element 允许根据其架构包含子级,则生成应用程序存在错误
  • 那不是真正的.xml文件..我只是以文本为例

标签: c# xml


【解决方案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());
}

【讨论】:

    【解决方案2】:

    XmlElement.InnerText 已为您转义。 String escape into XML 回答了类似的问题

    【讨论】:

    • 谢谢,但在回答时他们采用“反向”方式,即采用“
    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 2011-06-12
    • 2010-12-15
    • 2015-07-09
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多