문제

가와 함께 작동하는 응용 프로그램 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:intint, 에).다음을 할 수 있는 오브젝트 트리에서 메모리를 사용하여 해당 클래스고,직렬화를 사용하여 XmlSerializer.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top