xmlserializing 어레이를 설정할 때 루트 노드 이름을 설정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1624540

  •  06-07-2019
  •  | 
  •  

문제

XML로 직렬화하려는 객체 배열이 있습니다. 이 객체는 XML 노드 이름을 설정하도록 주석이 달리지 만 XML 루트 노드의 이름을 설정하는 방법이 궁금합니다.

코드는 다음과 같습니다.

// create list of items
List<ListItem> list = new List<ListItem>();
list.Add(new ListItem("A1", new Location(1, 2)));
list.Add(new ListItem("A2", new Location(2, 3)));
list.Add(new ListItem("A3", new Location(3, 4)));
list.Add(new ListItem("A4<&xyz>", new Location()));

// serialise
XmlSerializer ser = new XmlSerializer(typeof(ListItem[]));
FileStream os = new FileStream(@"d:\temp\seri.xml", FileMode.Create);
ser.Serialize(os, list.ToArray());
os.Close();

출력은 다음과 같습니다.

<?xml version="1.0"?>
<ArrayOfPlace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Place>
    <Placename>A1</Placename>
    <Location>
      <Lat>1</Lat>
      <Long>2</Long>
    </Location>
  </Place>
  <Place>
  ...

ListItem 이름이 바뀌 었습니다 장소 사용 xmlelement 주석이지만 루트 노드의 이름을 어떻게 이름을 바꾸도록 설정할 수 있습니까? 'Arrayofplace' 마디?

도움이 되었습니까?

해결책

이 시도:

XmlSerializer ser = new XmlSerializer(
    typeof(ListItem[]), 
    new XmlRootAttribute("CustomRootName"));

다른 팁

사용 xmlroot 기인하다.

방금 솔루션을 직접 찾았습니다.

xmlserializer를 인스턴스화 할 때 루트 노드의 이름을 설정할 수 있습니다. 아래를 참조하십시오.

XmlSerializer ser = new XmlSerializer(typeof(ListItem[]), new XmlRootAttribute("AllPlaces"));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top