私は問題があります:XMLの同じタグを2回シリアル化する
クラスをXMLファイルにシリアライズする必要があります。私は戻ってオブジェクトにそれをデシリアライズする必要はありません
<?xml version="1.0"?>
<Test>
<HeaderText>
<Tag1>AAA</Tag1>
</HeaderText>
<HeaderText>
<Tag2>BBB</Tag2>
</HeaderText>
</Test>
:
必要なXML:しかし、2つのプロパティが同じ名前で名前を付ける必要があります。
コード:
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);
}
このコードは動作しません。
名前空間 'からのXML要素' HeaderText 'が既に現在のスコープに存在しています。 XML属性を使用して、要素の別のXML名または名前空間を指定します。
どうすればよいですか?
実際の例:
public class Test
{
[XmlElement("HeaderText")]
public string[] HeaderText { get; set; }
}
、その後:
<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>
また公共一覧 HeaderText {} 'で動作します'、項目の追加/削除が容易です。 –
Tisho
@Tisho、yeap、私はこの情報を含めるために私の答えを更新しました。 –
ありがとう、それは簡単なプロパティのために動作します。問題の更新されたコードをご覧ください。 – Lari13