을 만드는 XmlDocument 으로 하드코딩된 스키마 C#
-
19-09-2019 - |
문제
가와 함께 작동하는 응용 프로그램 XML 파일입니다.한 경우에는 xml 파일이 존재하는,그러나 거기에는 또한 요구 사항,프로젝트를 생성합 빈 XML 파일을 다음 쓰는 경우에는 출력 파일이 존재하지 않습니다.
Xml 파일은 매우 복잡하게 스키마 다음과 같:
<?xml version="1.0" encoding="UTF-8"?>
<Results>
<Result>
<WorkorderId>45</WorkorderId>
<WorkerId>13</WorkerId>
<DeviceId>38954178</DeviceId>
<Latitude>45.234</Latitude>
<Longitude>19.54</Longitude>
<Note>[all is good]</Note>
<Operations>
<Operation>
<OperationId>23</OperationId>
<Result>Success</Result>
<ParsedInformation>
<Info>parsed data</Info>
<Info>more parsed data</Info>
</ParsedInformation>
</Operation>
<!-- more operations ... -->
</Operations>
</Result>
<!-- more results ... -->
</Results>
나는지 궁금하게 될 것입니다 어떻게 만들 XmlDocument 다음과 같이,그래서 내가 쓸 수 있는 결과나요?거기에"최상의 방법"에 대해 하드 코딩 스키마에서 어딘가에는 프로젝트,etc.?
참고로 나는 새로운 Xml 그래서 어떠한 추가 정보 문학의 매우 환영합니다.
해결책
내 지식으로는 노드별로 문서 노드를 빌드해야합니다. 아마도 빈 나무를 템플릿으로 저장할 수 있습니다.
다른 팁
나는 일반적으로 데이터를 포함하는 클래스 세트를 만들고 적절한 xmlserializer 속성으로 태그를 지정하여 기대하는 형식으로 직렬화되도록합니다. 이것은 꽤 좋은 자원입니다. http://msdn.microsoft.com/en-us/library/2baksw0z(vs.85).aspx
귀하의 경우에는 다음 수업이 있습니다 (비정상적인).
[XmlRoot("Results")]
public class Results
{
List<Result> results = new List<Result>();
[XmlElement("Result")]
List<Result> Results {get{return results;}}
}
public class Result
{
List<Operation> operations = new List<Operation>();
int WorkorderId {get; set;}
.... other fields
string Note{get;set;}
List<Operation> Operations {get{return operations;}}
}
public class Operation
{
List<string> parsedInformation = new List<string>();
int OperationId {get;set;}
....
[XmlArray("ParsedInformation")]
[XmlArrayItem("Info")]
List<string> ParsedInformation{get{return parsedInformation;}}
}
나중에 xmlserializer 클래스를 사용하여 XML로 직렬화합니다.
XmlSerializer serializer = new XmlSerializer(typeof(Results));
StringBuilder sb = new StringBuilder(); //this will contain the xml
serializer.Serialize(new TextWriter(sb), resultsObj);
분명히 문자열에서 객체로 데이터를 사로화 할 수도 있습니다.
XML 용 XSD 스키마가있는 경우 XSD.EXE 도구를 사용하여 코드를 생성 할 수 있습니다.
는 경우에 당신은 실제로는 XML 스키마에서 문서의 형식,다음 사용할 수 있습니다 xsd.exe
유틸리티를 생성하는 무리의 XmlSerializer
호환되는 클래스가 그것을 위해 요소가 되는 클래스,자신의 특성과 어린이들이 속성 요소를 시퀀스가 컬렉션 및니다.당신은 또한 적절한 형식으로 스키마를 그들을(즉 xs:int
가 int
, 에).다음을 할 수 있는 오브젝트 트리에서 메모리를 사용하여 해당 클래스고,직렬화를 사용하여 XmlSerializer
.