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

c# – XML序列化 – XmlCDataSection为Serialization.XmlText

发布时间:2020-12-15 04:22:24 所属栏目:百科 来源:网络整理
导读:我在使用c#序列化cdata部分时遇到问题 我需要将XmlCDataSection对象属性序列化为元素的innertext. 我要找的结果是这样的: Test value2="Another Test" ![CDATA[phello world/p]]/Test 为了产生这个,我使用这个对象: public class Test{ [System.Xml.Serial
我在使用c#序列化cdata部分时遇到问题

我需要将XmlCDataSection对象属性序列化为元素的innertext.

我要找的结果是这样的:

<Test value2="Another Test">
  <![CDATA[<p>hello world</p>]]>
</Test>

为了产生这个,我使用这个对象:

public class Test
{
    [System.Xml.Serialization.XmlText()]
    public XmlCDataSection value { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string value2 { get; set; }
}

在value属性上使用xmltext注释时,将引发以下错误.

System.InvalidOperationException:
There was an error reflecting property
‘value’. —>
System.InvalidOperationException:
Cannot serialize member ‘value’ of
type System.Xml.XmlCDataSection.
XmlAttribute/XmlText cannot be used to
encode complex types

如果我注释掉注释,序列化将起作用,但cdata部分被放入一个值元素,这对我想要做的事情没有好处:

<Test value2="Another Test">
  <value><![CDATA[<p>hello world</p>]]></value>
</Test>

任何人都可以指出我正确的方向让这个工作.

谢谢,亚当

解决方法

谢谢理查德,现在才有机会回到这一点.我想我已经通过你的建议解决了这个问题.我使用以下方法创建了一个CDataField对象:
public class CDataField : IXmlSerializable
    {
        private string elementName;
        private string elementValue;

        public CDataField(string elementName,string elementValue)
        {
            this.elementName = elementName;
            this.elementValue = elementValue;
        }

        public XmlSchema GetSchema()
        {
            return null;
        }

        public void WriteXml(XmlWriter w)
        {
            w.WriteStartElement(this.elementName);
            w.WriteCData(this.elementValue);
            w.WriteEndElement();
        }

        public void ReadXml(XmlReader r)
        {                      
            throw new NotImplementedException("This method has not been implemented");
        }
    }

(编辑:李大同)

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

    推荐文章
      热点阅读