Sorun şu ki:Serialize XML iki kez aynı etiketi
Sınıfa XML dosyası serileştirmem gerekiyor. Ama iki özellik aynı adla adlandırılmış olması gerekir:
İstenilen xml: Ben itiraz geri serisini gerekmez
<?xml version="1.0"?>
<Test>
<HeaderText>
<Tag1>AAA</Tag1>
</HeaderText>
<HeaderText>
<Tag2>BBB</Tag2>
</HeaderText>
</Test>
.
Kodu:
public class Header1
{
[XmlElement("Tag1")]
public String Tag1 { get; set; }
}
public class Header2
{
[XmlElement("Tag2")]
public String Tag2 { get; set; }
}
public class Test
{
[XmlElement("HeaderText")]
public Header1 Header1 { get; set; }
[XmlElement("HeaderText")]
public Header2 Header2 { get; set; }
}
var doc = new Test
{
Header1 = new Header1 { Tag1 = "AAA" },
Header2 = new Header2 { Tag2 = "BBB" }
};
var xml = new XmlSerializer(typeof(Test));
using (var fs = new FileStream("test.xml", FileMode.Create))
{
xml.Serialize(fs, doc);
}
Bu kod çalışmaz.
'' Alan adından 'HeaderText' XML öğesi geçerli kapsamda zaten mevcut. Öğe için başka bir XML adı veya ad alanı belirtmek için XML niteliklerini kullanın.
Ne yapabilirim?
Gerçek hayattan örnek: sonra
public class Test
{
[XmlElement("HeaderText")]
public string[] HeaderText { get; set; }
}
ve:
var doc = new Test
{
HeaderText = new[] { "AAA", "BBB" }
};
var xml = new XmlSerializer(typeof(Test));
using (var fs = new FileStream("test.xml", FileMode.Create))
{
xml.Serialize(fs, doc);
}
Ayrıca List<string>
ile çalışır
<Product>
<RecordReference>1-15991</RecordReference>
<MainSubject>
<MainSubjectSchemeIdentifier>66</MainSubjectSchemeIdentifier>
<SubjectCode>2</SubjectCode>
</MainSubject>
<MainSubject>
<MainSubjectSchemeIdentifier>20</MainSubjectSchemeIdentifier>
<SubjectHeadingText>Venäläisiä kirjoja: uskonto, teosofia, mystiikka</SubjectHeadingText>
</MainSubject>
</Product>
Ayrıca kamu List HeaderText {} 'ile çalışır ', Öğeleri Ekle/Kaldır daha kolay. –
Tisho
@Tisho, yeap, Bu bilgileri eklemek için cevabımı güncelledim. –
Teşekkürler, basit özellikler için çalışır. Lütfen güncellenmiş kodu inceleyin. – Lari13