У меня есть xml API, который я должен имитировать символ для символа.Я пытаюсь использовать встроенную функцию сериализации XML в .NET, но она добавляет некоторые дополнительные атрибуты.В веб-службе NORMAL или API xml эти атрибуты не повредят ничему и могут даже служить цели.Но они неожиданные персонажи, и, к сожалению, я не могу их допустить.Итак, вот что я хотел бы сделать (с гипотетическими объектами, конечно):
У меня есть базовый тип
public abstract class Instrument { }
... и у меня естьпроизводный тип
public class Guitar : Instrument { }
... и я хотел бы сериализовать производный тип в нечто вроде этого:
<Guitar />
Вместо, Я получаю это:
<Instrument d1p1:type="Guitar" xmlns:d1p1="http://www.w3.org/2001/XMLSchema-instance" />
Вот тест, с которым я работаю:
[TestClass]
public class when_serializing_a_guitar
{
private XmlSerializer _serializer;
private string _expectedXml;
private StringWriter _stringWriter;
private string _actualXml;
private XmlSerializerNamespaces _ns;
private XmlWriter _xmlWriter;
private void WithThisContext()
{
_ns = new XmlSerializerNamespaces();
_ns.Add("", "");
_stringWriter = new StringWriter();
_xmlWriter = XmlWriter.Create(_stringWriter, new XmlWriterSettings
{
OmitXmlDeclaration = true,
CloseOutput = false
});
_serializer = new XmlSerializer(typeof(Instrument), new[] { typeof(Guitar) });
_expectedXml = @"<Guitar />";
}
private void BecauseOfThisAction()
{
_serializer.Serialize(_xmlWriter, new Guitar(), _ns);
_actualXml = _stringWriter.ToString();
}
[TestMethod]
public void it_should_return_the_expected_properly_formatted_xml()
{
WithThisContext();
BecauseOfThisAction();
Assert.AreEqual(_expectedXml, _actualXml);
}
}
Знаете, как я могу это сделать?