2010-09-27 2 views
0

Некоторые фона:Как изменить имя тега сериализованного элемента XML с помощью IXmlSerializable

У нас есть некоторые классы сущностей нужно сериализовать, поэтому мы реализуем класс сущностей следующим образом в первом издании:

[XmlType("FooElement")] 
public class Foo 
{ 
    [XmlText] 
    public string Text { get; set; } 
} 

сериализованный строка XML должен быть:

<?xml version="1.0" encoding="gb2312"?> 
<FooElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" mlns:xsd="http://www.w3.org/2001/XMLSchema">foo</FooElement> 

Но нам нужно сделать свойство Text только для чтения, поэтому мы изменим класс Foo для реализации IXmlSeri alizable интерфейс следующим образом:

[Serializable] 
public class Foo : IXmlSerializable 
{ 
    public Foo() 
    { } 

    public Foo(string text) 
    { 
     Text = text; 
    } 

    public string Text { get; private set; } 

    public XmlSchema GetSchema() 
    { 
     return null; 
    } 

    public void ReadXml(XmlReader reader) 
    { 
     Text = reader.Value; 
    } 

    public void WriteXml(XmlWriter writer) 
    { 
     writer.WriteValue(Text); 
    } 
} 

Затем сериализованная строка XML также была изменена следующим образом:

<?xml version="1.0" encoding="gb2312"?><Foo>foo</Foo> 

Есть ли способ изменить имя тега из «<Foo>foo</Foo>» до «<FooElement>foo</FooElement>»?

ответ

2

Думаю, XmlRootAttribute должен хорошо сочетаться с IXmlSerializable.

+0

Спасибо, XmlRootAttribute работал должным образом. –

Смежные вопросы