2010-01-03 5 views
1

예 :XML 데이터를 serialize/deserialize 할 때 XML 요소와 클래스 속성의 이름이 같은가요?

다음은 간단한 클래스입니다.

class Hero 
{ 
    public string faction; 
    public string name; 
    public HeroType herotype; 
} 

다음은 XML입니다.

<Hero> 
    <android> 
     <Faction>evil</Faction> 
     <nombre>android</nombre> 
    </android> 
</Hero> 

는 속성 정보를 직렬화하기 위해 정확히 동일해야합니까?

내 주 목적은 내 XML 파일의 정보로 Hero 클래스에 정보를 "로드"하는 것입니다.

답변

4

[XmlElement (...)]로 필드를 장식하여 대체 이름을 지정할 수 있습니다. 또한 그들은 같은 순서 일 필요는 없습니다. 그러나 지정한 XML이 지정한 클래스의 구조에 맞지 않습니다.

이런 식으로 XML을 수정

<Hero> 
    <Name>android</Name> 
    <Faction>evil</Faction> 
    <HeroType>Agility</HeroType> 
</Hero> 
0

을 (Aviad P.가 [XmlElement()] 속성과 속성을 장식하여, 말하는대로) 당신이 별도로 지정하지 않는 한, XML의 이름이 정확히 일치합니다 속성 이름, 그 반대의 경우도 마찬가지입니다.

주문은 중요하지 않습니다. 실제로 ""이인지 여부가 중요하지 않은지 여부에 따라 "해야합니다"라고 말합니다. 어떻게 클래스를 디자인 했느냐에 달려 있습니다.

일반적으로 속성 집합을 부작용없이 사용하는 것이 좋지만 XML 직렬화를 처리 할 때는 필수적입니다. 직렬화 복원 중 속성은 XML에 나타나는 순서대로 값으로 설정됩니다.

이 클래스가 그래서 경우 :

public class Test 
{ 
    private string _Foo; 
    public string Foo { set { _Foo = value; _Baz="Foo"; } get { return _Foo; }} 

    private string _Bar; 
    public string Bar { set { _Bar = value; _Baz="Bar"; } get { return _Bar; }} 

    private string _Baz; 
    public string Baz { set { _Baz = value; } get { return _Baz; }} 
} 

다음 XML FooBar 전에 나타나는 Baz는 "푸", BarFoo 전에 나타나는 XML은 Baz에 "바"로 설정됩니다하는 동안 설정됩니다.

관련 문제