Tôi gặp sự cố:Nối tiếp XML cùng một thẻ hai lần
Tôi phải tuần tự hóa lớp thành tệp XML. Nhưng hai thuộc tính phải được đặt tên có cùng tên:
mong muốn xml:
<?xml version="1.0"?>
<Test>
<HeaderText>
<Tag1>AAA</Tag1>
</HeaderText>
<HeaderText>
<Tag2>BBB</Tag2>
</HeaderText>
</Test>
Tôi không cần phải deserialize nó trở lại phản đối.
Code:
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);
}
Mã này không hoạt động.
Phần tử XML 'Tiêu đề' từ không gian tên '' đã có mặt trong phạm vi hiện tại. Sử dụng các thuộc tính XML để chỉ định một tên hoặc không gian tên XML khác cho phần tử.
Tôi có thể làm gì?
dụ thực thế giới:
<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>
Cũng làm việc với 'public List HeaderText {} ', dễ dàng hơn để thêm/loại bỏ các mục. –
Tisho
@Tisho, yeap, tôi đã cập nhật câu trả lời của mình để bao gồm thông tin này. –
Cảm ơn, nó hoạt động cho các thuộc tính đơn giản. Vui lòng xem mã cập nhật được đề cập. – Lari13