Некоторые фона:Как изменить имя тега сериализованного элемента 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>
»?
Спасибо, XmlRootAttribute работал должным образом. –