xmlserializing 어레이를 설정할 때 루트 노드 이름을 설정하는 방법은 무엇입니까?
-
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"));
제휴하지 않습니다 StackOverflow