Я хочу сериализовать следующий класс как дочерний объект другого класса.C# XML сериализует элементы из объекта типа без пространства имен
[XmlInclude(typeof(string)), XmlInclude(typeof(XML_Variable))]
public class XMLTagDataSection
{
[XmlElement("Offset")]
public int XML_Offset { get; set; }
[XmlElement("Type")]
public EnuDataType XML_type { get; set; }
[XmlElement("Value")]
public object XML_Value { get; set; }
[XmlElement("Info")]
public string XML_Info { get; set; }
[XmlElement("NumBytes")]
public int XML_NumBytes { get; set; }
}
public class XML_Variable
{
[XmlElement("Variable", IsNullable = false)]
public int Variable { get; set; }
}
это мой фактический выход:
<Data>
<Offset>0</Offset>
<Type>ASCII</Type>
<Value xmlns:q1="http://www.w3.org/2001/XMLSchema" d7p1:type>test-string</Value>
<Info>some text</Info>
<NumBytes>11</NumBytes>
</Data>
<Data>
<Offset>11</Offset>
<Type>ASCII</Type>
<Value d7p1:type="XML_Variable" xmlns:d7p1="http://www.w3.org/2001/XMLSchema-instance">
<Variable>0</Variable>
</Value>
<Info>a variable</Info>
<NumBytes>5</NumBytes>
, как я могу избавиться от имен моего XML_Value элемента? , чтобы получить следующий вывод:
<Data>
<Offset>0</Offset>
<Type>ASCII</Type>
<Value>test-string</Value>
<Info>some text</Info>
<NumBytes>11</NumBytes>
</Data>
<Data>
<Offset>11</Offset>
<Type>ASCII</Type>
<Value>
<Variable>0</Variable>
</Value>
<Info>a variable</Info>
<NumBytes>5</NumBytes>
я использовать эту часть кода для сериализации родительского элемента:
XmlSerializerNamespaces NameSpace = new XmlSerializerNamespaces();
NameSpace.Add("", "");
XmlSerializer xmlserializer = new XmlSerializer(typeof(XMLRoot));
FileStream str = new FileStream(fileName, FileMode.Create);
xmlserializer.Serialize(str, Root_Tag, NameSpace);
str.Close();
return true;
Благодарим вас за быстрый ответ. – AasK
, и нет возможности для XmlSerializer разделять теги в зависимости от структуры theire? – AasK
@ пользователь3226908 нет, не действительно. Вы можете реализовать 'IXmlSerializable', но это откровенно ужасно. К тому времени, как вы это сделали, было бы проще использовать LINQ-to-XML или 'XmlDocument' –