Я попытался генерироваться класс от вашего XML. В начале я сгенерировал XSD с вашего XML
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="GeneralTranslation">
<xs:complexType>
<xs:sequence>
<xs:element name="Day" type="xs:string" />
<xs:element name="Month" type="xs:string" />
<xs:element name="Year" type="xs:string" />
<xs:element name="Submit" type="xs:string" />
<xs:element name="Select" type="xs:string" />
<xs:element name="TradingExp">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Option" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LevelOfInvestment">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Option" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
затем с помощью утилиты XSD Я создал следующий класс
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class GeneralTranslation {
private string dayField;
private string monthField;
private string yearField;
private string submitField;
private string selectField;
private string[] tradingExpField;
private string[] levelOfInvestmentField;
/// <remarks/>
public string Day {
get {
return this.dayField;
}
set {
this.dayField = value;
}
}
/// <remarks/>
public string Month {
get {
return this.monthField;
}
set {
this.monthField = value;
}
}
/// <remarks/>
public string Year {
get {
return this.yearField;
}
set {
this.yearField = value;
}
}
/// <remarks/>
public string Submit {
get {
return this.submitField;
}
set {
this.submitField = value;
}
}
/// <remarks/>
public string Select {
get {
return this.selectField;
}
set {
this.selectField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("Option", IsNullable=false)]
public string[] TradingExp {
get {
return this.tradingExpField;
}
set {
this.tradingExpField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlArrayItemAttribute("Option", IsNullable=false)]
public string[] LevelOfInvestment {
get {
return this.levelOfInvestmentField;
}
set {
this.levelOfInvestmentField = value;
}
}
}
}
так отсюда вы можете получить строковые массивы, но не перечисляют
ниже есть как-к:
- Откройте XML в визуальной S tudio
- Выберите вкладку с вашим XML. В главном меню выберите XML/Create Schema. (студия откроет вам файл схемы)
- использование xsd.exe util. (http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.110).aspx)
в некоторых случаях я делаю следующий трюк с XSD-х годов:
, когда я знаю, что мой документ schmema может быть изменен во время цикла разработки:
Я добавляю файл XSD в мой проект. В файле проекта я добавляю в следующих разделах
<PropertyGroup>
<WIN_SDK_PATH>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\[email protected])</WIN_SDK_PATH>
<WIN_SDK_BIN_PATH>$(WIN_SDK_PATH)bin</WIN_SDK_BIN_PATH>
<XSDUTIL>"$(WIN_SDK_BIN_PATH)\xsd.exe"</XSDUTIL>
</PropertyGroup>
<Target Name="XSD2CS">
<Exec Command="$(XSDUTIL) "$(ProjectDir)XMLSchema1.xsd" /classes /out:"$(ProjectDir)obj" /namespace:$(RootNamespace).XSD" />
</Target>
<Target Name="BeforeBuild" DependsOnTargets="XSD2CS">
</Target>
и еще один раздел в том, что содержат мои файлы проекта
<Compile Include="$(ProjectDir)obj\XMLSchema1.cs">
<SubType>Code</SubType>
</Compile>
каждый раз, когда я компиляции моего проекта я получаю класс, который соответствует последняя фактическая версия моего xsd. поэтому все, что мне нужно позаботиться, это правильный и полный файл xsd.
нет. некоторая работа по-прежнему требуется –
@hmnzr - я добавил код, который я пробовал. спасибо – SexyMF
@YaugenVlasau - может быть, вы предлагаете лучшую структуру данных вместо списка? возможно, измените структуру xml? спасибо – SexyMF