2014-11-04 37 views
0

我目前正在嘗試將XML文檔加載到C#程序,以便我可以將它作爲肥皂請求發送。如何加載XML文檔以顯示爲特定輸入格式

這是我想參考的XML文檔。它有無數的行數。

<?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> 

我需要這個文件格式化成:一旦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 

+0

你有什麼試圖重新格式化?當你試圖這樣做時,你遇到了什麼錯誤? – EWit 2014-11-04 14:40:55

+0

我還沒有嘗試重新格式化它。我試圖確定最好的方法是什麼。這是我的第一個Web服務項目,所以我的一切都非常新穎。 – 2014-11-04 16:30:42

回答

0

嘗試在原始XML中使用xsd工具,以便創建類以序列化內存中的XML。

然後使用XmlSerializer爲了讓所有進入memmory:

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

使用與要以形成另一個序列化類創建輸出XML格式相同的XSD工具。

創建函數以將一個對象轉換爲另一個對象,然後將該對象發送到您的SOAP webreferences或使用相同的XmlSerializer和調用Serialize爲SOAP消息生成XML。

+0

如何指定模式使用名稱/值對? *完全披露當我談到C#和格式化XML時,我相當綠色。 – 2014-11-04 18:28:41

+0

以更簡單的方式,您將創建一個具有兩個屬性的Class('class ResultColumn',可能?):'Name'和'Value'。這是更簡單的方法。但是,再次製作一個XML作爲例子並運行xsd自定義工具,您應該立即獲得您的類!要使用此工具,請不要忘記運行Visual Studio命令提示符,否則您將找不到'xsd.exe'工具。 – rodrigogq 2014-11-04 19:19:15