【问题标题】:XElement.Parse and special characters in attributeXElement.Parse 和属性中的特殊字符
【发布时间】:2017-12-13 16:22:46
【问题描述】:

我有一个包含 xml 的字符串,例如:

<Person Name="Molly O&apos;Mahony" />

我想将其转换为 XElement,维护 &amp; apos ; 而不是将其转换为 '

使用

XElement.Parse(string);

创建元素&lt;Person Name="Molly O'Mahony" /&gt; 这可能吗?

【问题讨论】:

  • 是什么让你认为它会被转换?你现在有什么代码?
  • 使用 XElement.Parse(string) 转换它
  • @dbc OP 表示属性中的值。他的样本无论如何都不是有效的xml,但他的意思是&lt;Name Attr="Molly O&amp;apos;Mahony" /&gt;
  • 你为什么还要关心编码?在 XML 中也是一样的。
  • @DavidG 因为会在某个时候进行 CRC 检查

标签: c# xml linq


【解决方案1】:

我们开始吧:

var txt = "<Person Name=\"Molly O&apos;Mahony\" />";

var e  = XElement.Parse(txt, LoadOptions.SetLineInfo);
var li = (IXmlLineInfo) e.Attribute("Name");

// li.LinePosition points to first char of the attribute: Name="Molly O&apos;Mahony"
//                                                        ^

var start = txt.IndexOf('"', li.LinePosition) + 1;  
var end   = txt.IndexOf('"', start);
var len   = end - start;

var attr  = txt.Substring(start, len); // Molly O&apos;Mahony

您可能需要调整代码以使其适用于多行文本。

【讨论】:

    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 2013-01-08
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2020-09-23
    相关资源
    最近更新 更多