2010-02-02 5 views
0

참고 : XSD를 사용할 수 없습니다. 이유는 들어 가지 않습니다.xsd가없는 XML 표현

가 직렬화 복원받을 것을 내가 제대로 클래스에 다음 XML을 나타내는 데 문제

:

XML :

<product> 
    <sku>oursku</sku> 
    <attribute name="attrib1">value1</attribute> 
    <attribute name="attrib2">value2</attribute> 
    <attribute name="attribx">valuex</attribute> 
</product> 

문제가 표현하는 속성 노드

내가 지금까지 가지고있는 것은 :

[XmlElement(ElementName = "Attribute")] 
public Attribute[] productAttributes; 

public class Attribute 
{ 
    [XmlAttribute(AttributeName = "Name")] 
    public string attributeName; 

    public Attribute() 
    { 

    } 
} 

값을 저장할 무언가가 누락되었다는 것을 알고 있습니다.

답변

2

xsd.exe을 실행하고 그것에서 C# 클래스는이 결과 산출 :

[Serializable] 
[XmlType(AnonymousType=true)] 
[XmlRoot(Namespace="", IsNullable=false)] 
public partial class product 
{ 
    private string skuField; 
    private productAttribute[] attributeField; 

    [XmlElement(Form=XmlSchemaForm.Unqualified)] 
    public string sku { 
     get { 
      return this.skuField; 
     } 
     set { 
      this.skuField = value; 
     } 
    } 

    [XmlElement("attribute", Form=XmlSchemaForm.Unqualified, IsNullable=true)] 
    public productAttribute[] attribute { 
     get { 
      return this.attributeField; 
     } 
     set { 
      this.attributeField = value; 
     } 
    } 
} 

[Serializable] 
[XmlType(AnonymousType=true)] 
public partial class productAttribute { 

    private string nameField; 
    private string valueField; 

    [XmlAttribute] 
    public string name { 
     get { 
      return this.nameField; 
     } 
     set { 
      this.nameField = value; 
     } 
    } 

    [XmlText] 
    public string Value { 
     get { 
      return this.valueField; 
     } 
     set { 
      this.valueField = value; 
     } 
    } 
} 

+0

예, 당신은 신입니다. –

0

생성하려고하는 XML이 XmlSerializer가 기본적으로을 만들 수있는 정렬처럼 보이지 않습니다. 나는 당신이 IXmlSerializable을 구현하고 그것을 직접 작성해야 할 것이라고 생각한다. 중간 XSD를 만들려면 XML에 두 번

public class Attribute 
{ 
    [XmlAttribute(AttributeName = "Name")] 
    public string attributeName; 

    [XmlText] 
    public string Value {get;set;} 

    public Attribute() 
    { 

    } 
} 
0

난 당신이 속성 [XmlText]을 사용할 필요가 있다고 생각 그것은 당신을 위해 일하는가 ??

+0

시도해보십시오. 주사위가 없습니다. "오류 반영 유형" –