XML解析.net c#

问题描述:

我是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

的XML被误格式化通过该网站,所以我就假设它是在一个字符串一些有效的XML文档。

如果是这种情况,请查看XmlDocument类,可以将字符串提供给它,类将解析它,然后可以提取值,以便可以根据需要将它们放入数据库中。

看XmlDocument类

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

+1

我认为它需要更强调的smidge - 如果你可以使用XDocument和Linq到XML那么这应该几乎当然是你的默认选择... – Murph 2009-11-06 15:49:52

当然,xml必须是有效的。

  • 如果你使用的数据集和数据表来 坚持你的数据,你可以使用 数据集this way
  • 我oppinion一个更好的办法是使用 对象,在这种情况下,你可以使用 xml serializer,直接序列化 您的XML对象。这 确实需要更多的工作才能完成 ,并且更多地搜索到 可以获得序列化属性的正确性,但是在我看来这是值得的。