【发布时间】:2011-02-16 17:00:47
【问题描述】:
我正在使用 XmlSerializer 反序列化配置文件。我希望能够将 Xml 元素的子内容提取到字符串字段中。此子内容可以是 xml 本身。
一个简单的例子:
public class Configuration
{
[XmlAttribute]
public string MyAttribute { get; set; }
[XmlText]
public string Content { get; set; }
}
我正在尝试解析以下内容:
<Configuration MyAttribute="foo">
<SomeOtherXml />
</Configuration>
我希望将 Content 属性设置为 "<SomeOtherXml />",但我似乎无法让它工作。我不想将内容封装在 CDATA 或类似文件中。
这是可能的还是我需要手动处理我的配置文件的解析?
谢谢
【问题讨论】:
-
你可以使用正则表达式来解析它,但我猜你已经知道了。
-
@Duncan - 你为什么关心 xml 元素的名称。如果需要,您可以简单地将 Content 属性命名为“SomeOtherXml”。
-
@Ramhound - 我不在乎 Xml 元素叫什么 - 我希望 Content 属性的 值 为
"<SomeOtherXml />"。 -
解释原因 - 我想在配置文件中嵌入 XSL 转换,但在编写 XSL 时仍然允许智能感知工作。如果我将 XSL 数据封装在 CDATA 中,那么我将失去智能感知。作为一种解决方法,我手动解析配置文件。
-
为什么不能使用
XmlElement类型的 Content 属性?那会解决你的问题。作为string,它将始终被转义。
标签: c# serialization xmlserializer deserialization