2012-03-21 1 views
2

으로 를 목록으로 나는 내가 XmlRootAttribute를 자동차와 목록을 직렬화 할 때 LicencePlate, 라는 속성을 가진 자동차라는 클래스는, 생성 된 XML은 그것이 직렬화하는 코드 역 직렬화 된 XML은 XmlRootAttribute를

<Cars> 
<Car> 
<LicencePlate></LicencePlate> 
</Car> 
<Cars> 

있다가

XmlSerializer ser = new XmlSerializer(ListCars.GetType(), new XmlRootAttribute("Cars")); 

하지만이 XML은 클래스에 'Cars'속성이 없으므로이 XML에 오류가 발생합니다.

누군가 나를 도울 수 있습니까?

+0

역 직렬화에 동일한 코드를 사용합니까? –

답변

1

의심이 제대로 수행이 래퍼는 직렬화 알아야

[XmlRoot("Cars"), XmlType("Cars")] 
public class SomeWrapper { 
    [XmlElement("Car")] 
    public List<Car> Cars { get { return cars; } } 
    private readonly List<Car> cars = new List<Car>(); 
} 

는/제대로 역 직렬화.

-1

개체를 serialize 할 때 사용한 것과 동일한 XmlSerializer를 사용하여 개체를 deserialize해야합니다. 일반적으로 XmlElementAttribute 및 관련 XML 직렬화 속성을 사용하여 클래스 자체에 XML 구조를 지정합니다.

개체를 serialize 할 때 어떤 이유로 루트 요소를 재정의해야하는 경우 루트 요소를 다른 방향으로 재정의해야합니다.

var output = new MemoryStream(); 
LoadSerializedObjectIntoTheStream(output); 

var ser = new XmlSerializer(typeof(ListCars), new XmlRootAttribute("Cars")); 
var carlist = ser.Deserialize(output) as ListCars; 
+1

하지만 XML이 생성되지 않아 누가 태그 이름을 모르는지를 생성하므로이 태그 이름을 바꾸는 쉬운 방법을 알고 싶습니다 –

+0

XML 문서를 XML로 열고 이름을 읽을 수 있습니까? 루트 태그의? –

0

이 시도 :

기록 자동차 클래스 :

public class Car 
{ 
    public string LicencePlate { get; set; } 
} 

귀하의 XML 클래스 :

[XmlRoot("Cars")] 
public class ListCars 
{ 
    [XmlElement("Car")] 
    public List<Car> Car { get; set; } 
} 

건배.