2014-11-04 5 views
0

현재 SOAP 문서로 보낼 수 있도록 XML 문서를 C# 프로그램에로드하려고합니다.XML 문서를로드하여 특정 입력 형식으로 표시하는 방법

다음은 내가 참조하려고하는 XML 문서입니다. 무한 수의 행이있을 수 있습니다. XML 파일을로드하고 XML 데이터를 포함하는 변수는 SOAP 엔벨로프에 배치 될 올바른 포맷으로 마사지되면

<ResultSet> 
    <RowCount>1</RowCount> 
    <Rows> 
     <Row> 
     <Columns> 
      <Column> 
      <Value>jdoe</Value> 
      <Name>User_ID</Name> 
      </Column> 
      <Column> 
      <Value>John</Value> 
      <Name>FIRST_NAME</Name> 
     and so forth 

:

<?xml version="1.0" encoding="UTF-8" ?> 
<ROWSET> 
    <ROW num="1"> 
    <USER_ID></USER_ID> 
    <FIRST_NAME>John</FIRST_NAME> 
    <MIDDLE_NAME></MIDDLE_NAME> 
    <LAST_NAME>Doe</LAST_NAME> 
    <EMPLOYEE_NO>12345</EMPLOYEE_NO> 
    <HOME_PHONE></HOME_PHONE> 
    <EMPLOYEE_STATUS_>A</EMPLOYEE_STATUS_> 
    <HIRE_DATE>05/17/2010</HIRE_DATE> 
    <DEPARTMENT>Engineering</DEPARTMENT> 
    <POSITION>Controls Engineer</POSITION> 
    <SHIFT>N</SHIFT> 
    <REPORTS_TO>Everhart,Robert</REPORTS_TO> 
    <PAY_TYPE>H</PAY_TYPE> 
    <EMPLOYEE_TYPE>R</EMPLOYEE_TYPE> 
    <TERMINATION_DATE></TERMINATION_DATE> 
    <PCN_CODE>Company_RV</PCN_CODE> 

    </ROW> 
    <ROW num="2"> 
    <USER_ID>RV12345</USER_ID> 
    <FIRST_NAME>Jane</FIRST_NAME> 
    <MIDDLE_NAME>G</MIDDLE_NAME> 
    <LAST_NAME>Doe</LAST_NAME> 
    <EMPLOYEE_NO>123455</EMPLOYEE_NO> 
    <HOME_PHONE></HOME_PHONE> 
    <EMPLOYEE_STATUS_>A</EMPLOYEE_STATUS_> 
    <HIRE_DATE>09/15/2008</HIRE_DATE> 
    <DEPARTMENT>Shipping</DEPARTMENT> 
    <POSITION>Shipping Coordinator</POSITION> 
    <SHIFT>2</SHIFT> 
    <REPORTS_TO>Hajkova,Karin</REPORTS_TO> 
    <PAY_TYPE>H</PAY_TYPE> 
    <EMPLOYEE_TYPE>R</EMPLOYEE_TYPE> 
    <TERMINATION_DATE></TERMINATION_DATE> 
    <PCN_CODE>Company_RV</PCN_CODE> 

난에이 파일을 포맷 할 필요가있다.

+0

무엇을 다시 포맷하려 했습니까? 그리고 그렇게 할 때 어떤 오류가 발생 했습니까? – EWit

+0

아직 재 형식화하지 않았습니다. 나는 이것에 관해 가장 좋은 방법이 무엇인지 결정하려고 노력 중이다. 이것은 나의 첫 번째 웹 서비스 프로젝트이기 때문에 모든 것이 나의 마지막에 새롭다. –

답변

0

xsd 도구를 원본 XML과 함께 사용하여 메모리에 XML을 직렬화하는 클래스를 만들어보십시오.

는 모든 memmory에 들어갈 위해 XmlSerializer를를 사용

XmlSerializer serializer = new XmlSerializer(XmlClassTypeYouCreatedOnXsdTool); 
XmlReader reader = new XmlTextReader(xml); 
var instance = serializer.Deserialize(reader); 

를 사용하여 다른 직렬화 클래스를 형성하기 위해 작성하려는 출력 XML 양식 같은 XSD 도구입니다.

하나의 객체를 다른 객체로 변환하고 객체를 SOAP 웹 참조로 보내거나 동일한 XmlSerializer을 사용하고 Serialize을 호출하여 SOAP 메시지에 XML을 생성하십시오.

+0

스키마에서 이름/값 쌍을 사용하도록 지정하려면 어떻게해야합니까? * 전체 공개 C# 및 xml 서식 지정의 경우 상당히 녹색입니다. –

+0

더 간단한 방법으로 'Name'과 'Value'의 두 가지 속성을 가진 클래스 ('ResultColumn' 어쩌면?)를 만들 수 있습니다. 이것은 더 간단한 방법입니다. 그러나 다시 XML을 예제로 작성하고 xsd 사용자 정의 도구를 실행하면 즉시 클래스를 가져와야합니다! 이 도구를 사용하려면 Visual Studio 명령 프롬프트를 실행하는 것을 잊지 마십시오. 그렇지 않으면'xsd.exe '도구를 찾을 수 없습니다. – rodrigogq

관련 문제