2009-11-06 88 views
0

我是XML新手我收到以下文件/字符串。我怎樣才能在C#中分解它,這樣我就可以將每個字段放入我的SQL Server數據庫中?順便說一句,我不知道如何在StackOverflow中格式化XML,如果有人能告訴我如何去做。我會做的。XML解析.net c#

<?xml version='1.0' encoding='ISO-8859-1'?> 
<SystemGenerator-Document> 
    <TN>42</TN> 
    <OC>CR</OC> 
    <HN>738</HN> 
    <USERID>xxx</USERID> 
    <WS>FACTORY</WS> 
    <OBJID>254209</OBJID> 
    <SystemGenerator-Process> 
     <RNO>247989</RNO> 
     <RSNO>1</RSNO> 
     <OBJID>254209</OBJID> 
     <ARR>03.11.2009</ARR> 
     <DEP>21.11.2009</DEP> 
     <NOPAX>2</NOPAX> 
     <RT>1</RT> 
     <SystemGenerator-Person> 
       <ARR>03.11.2009</ARR> 
       <DEP>21.11.2009</DEP> 
       <PCIID>700842</PCIID> 
       <HASPREV>FALSE</HASPREV> 
       <HASSUCC>FALSE</HASSUCC> 
       <NOPAX>1</NOPAX> 
       <SF>N</SF> 
       <GID>535372</GID> 
       <SN>Torres</SN> 
       <CN>Xavier</CN> 
       <LN></LN> 
       <VIP></VIP> 
       <STREET></STREET> 
       <CITY></CITY> 
       <ZIP></ZIP> 
       <COUNTRY></COUNTRY> 
       <STATE></STATE> 
       <AREA></AREA> 
       <PHONE></PHONE> 
       <PHONE2></PHONE2> 
       <FAX></FAX> 
       <FAX2></FAX2> 
       <EMAIL></EMAIL> 
       <EMAIL2></EMAIL2> 
       <TAXID></TAXID> 
       <DOB></DOB> 
       <SEX>0</SEX> 
       <PASSWD></PASSWD> 
       <MATCHCODE></MATCHCODE> 
       <ADMCODEHQ></ADMCODEHQ> 
       <GT>GUEST</GT> 
       <GTD>1</GTD> 
       <GNR>19726</GNR> 
       <GMD>738</GMD> 
       <GDB>0</GDB> 
       <TT>M</TT> 
       <HQGID>0</HQGID> 
       <CREQ>0</CREQ> 
       <CREQSTATE> 
       </CREQSTATE> 
       <SALUTATION></SALUTATION> 
       <TITLE></TITLE> 
       <T-TITLE> 
       </T-TITLE> 
       <CARDS></CARDS> 
       <RN>718</RN> 
       <CAT></CAT> 
       <TG>1A</TG> 
       <MC>64</MC> 
       <SystemGenerator-Package> 
         <FROM>03.11.2009</FROM> 
         <TO>21.11.2009</TO> 
         <SID>AL</SID> 
         <RS>CLG</RS> 
         <SIDT>P</SIDT> 
       </SystemGenerator-Package> 
     </SystemGenerator-Person> 
     <SystemGenerator-Person> 
       <ARR>03.11.2009</ARR> 
       <DEP>21.11.2009</DEP> 
       <PCIID>700843</PCIID> 
       <HASPREV>FALSE</HASPREV> 
       <HASSUCC>FALSE</HASSUCC> 
       <NOPAX>1</NOPAX> 
       <SF>N</SF> 
       <SN>Torres</SN> 
       <CN>Xavier</CN> 
       <RN>718</RN> 
       <CAT></CAT> 
       <TG>1A</TG> 
       <MC>64</MC> 
       <SystemGenerator-Package> 
         <FROM>03.11.2009</FROM> 
         <TO>21.11.2009</TO> 
         <SID>AL</SID> 
         <RS>CLG</RS> 
         <SIDT>P</SIDT> 
       </SystemGenerator-Package> 
     </SystemGenerator-Person> 
    </SystemGenerator-Process> 
    <ORG>[email protected](3244)#4840</ORG> 
</SystemGenerator-Document> 
+0

XML的格式與代碼相同:在兩個'標記之間圍繞XML內容,或選擇內容並在文本編輯器上方的圖標欄中用「1010」按下圖標。 – Konamiman 2009-11-06 15:42:21

+1

確切的重複http://stackoverflow.com/questions/1688024/parse-xml-string-net – 2009-11-06 15:45:42

回答

0

的XML被誤格式化通過該網站,所以我就假設它是在一個字符串一些有效的XML文檔。

如果是這種情況,請查看XmlDocument類,可以將字符串提供給它,類將解析它,然後可以提取值,以便可以根據需要將它們放入數據庫中。

1

看XmlDocument類

此外,如果您使用的是.NET Framework 3.5或更高版本,您可以使用the XDocument class

+1

我認爲它需要更強調的smidge - 如果你可以使用XDocument和Linq到XML那麼這應該幾乎當然是你的默認選擇... – Murph 2009-11-06 15:49:52

0

當然,xml必須是有效的。

  • 如果你使用的數據集和數據表來 堅持你的數據,你可以使用 數據集this way
  • 我oppinion一個更好的辦法是使用 對象,在這種情況下,你可以使用 xml serializer,直接序列化 您的XML對象。這 確實需要更多的工作才能完成 ,並且更多地搜索到 可以獲得序列化屬性的正確性,但是在我看來這是值得的。