解析XML字符串.net

时间:2009-11-06 14:40:17

标签: xml parsing

我有以下需要解析的XML字符串(break)。任何人都知道要使用的代码是什么?如果需要,我可以提供我的代码。

<?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>OWNER@FACTORY(3244)#4840</ORG>
</SystemGenerator-Document>

1 个答案:

答案 0 :(得分:1)

我建议使用LinqToXml来解析xml数据。这是一个很好的Sample

样品

public class XmlDocumentReader
{
    private XDocument xmlDoc = new XDocument();
    public XmlDocumentReader(string xml)
    {
        xmlDoc.LoadXml(xml);
    }

    public void ParseAndSave()
    {
        var document = from document in xmlDoc.Element("SystemGenerator-Document");
        select new
        {  
            TC = document.Element("TN").Value;
            OC = document.Element("OC").Value;
            HN = document.Element("HN").Value;
            USERID = document.Element("USERID").Value;
            ... and so on
        };

        // insert your data into the database
        // I would assume you have a method called "InsertDocument" or something
        MyDatabase.InsertDocument(document.TC,
                                  document.OC,
                                  document.HN,
                                  document.USERID,
                                  ...);
    }
}