2015-08-31 178 views
-1

是否有工具來創建基於XML的類結構或簡單的方法來反序列化XML文檔?我的XML中的標記是stadardized,但我不知道在C#中使用此文檔的最佳方式。如何將XML轉換爲C#對象

的XML看起來是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<shapes> 
    <FunctionalBlocks> 
    <FunctionalBlock uid="{43FA5CE2-3A26-4276-AE30-54DFF4D28E36}" name="1FTT001"> 
     <props> 
     <prop name="Typical or Mode" /> 
     <prop name="Function Template Type">MA</prop> 
     <prop name="Node">01</prop> 
     <prop name="System (Tag)">1</prop> 
     <prop name="Instrumentation Identification (Tag)">FTT</prop> 
     <prop name="Sequence Number (Tag)">001</prop> 
     <prop name="Comment">Produced water</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="EffectList" /> 
     <prop name="Shape Type">FunctionBlock</prop> 
     </props> 
     <pos left="2.283464" top="17.244094" right="3.228346" bottom="16.614173" /> 
     <connects> 
     <In> 
      <connect input="X" uid="{41872BA8-4AE2-40DA-AE93-3A4BCBE24443}" /> 
     </In> 
     <Out> 
      <connect output="AHH" uid="{C439DFA1-1A80-414E-9CF5-FBD7D3A4FA77}">.X1</connect> 
     </Out> 
     <Undirected /> 
     </connects> 
    </FunctionalBlock> 
    <FunctionalBlock uid="{AB65A176-9C8A-4F63-901E-715B4709FFE2}" name="1UV001"> 
     <props> 
     <prop name="Typical or Mode" /> 
     <prop name="Function Template Type">SBE</prop> 
     <prop name="Node">01</prop> 
     <prop name="System (Tag)">1</prop> 
     <prop name="Instrumentation Identification (Tag)">UV</prop> 
     <prop name="Sequence Number (Tag)">001</prop> 
     <prop name="Comment" /> 
     <prop name="SAS System">C</prop> 
     <prop name="EffectList" /> 
     <prop name="Shape Type">FunctionBlock</prop> 
     </props> 
     <pos left="6.456692" top="16.929133" right="7.401574" bottom="16.299212" /> 
     <connects> 
     <In> 
      <connect input="FSL" uid="{FD6A0B2D-729B-474C-A5B1-A49BB1CC481D}">O</connect> 
     </In> 
     <Out> 
      <connect output="BA" uid="{57B4BE80-66E7-4E19-AEA1-AC8EBA01B195}">&amp;.X2</connect> 
      <connect output="Y" uid="{57B4BE80-66E7-4E19-AEA1-AC8EBA01B195}">&amp;.X1</connect> 
     </Out> 
     <Undirected /> 
     </connects> 
    </FunctionalBlock> 
    <FunctionalBlock uid="{F720A6D5-3A87-4BF1-8D0D-43E6481481A9}" name="1FT002"> 
     <props> 
     <prop name="Typical or Mode" /> 
     <prop name="Function Template Type">MA</prop> 
     <prop name="Node">01</prop> 
     <prop name="System (Tag)">1</prop> 
     <prop name="Instrumentation Identification (Tag)">FT</prop> 
     <prop name="Sequence Number (Tag)">002</prop> 
     <prop name="Comment">Produced water</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="EffectList" /> 
     <prop name="Shape Type">FunctionBlock</prop> 
     </props> 
     <pos left="2.913385" top="16.141732" right="3.858267" bottom="15.511811" /> 
     <connects> 
     <In> 
      <connect input="X" uid="{568DF49F-C484-4860-86FC-E373C5FBE5E5}" /> 
     </In> 
     <Out> 
      <connect output="AHH" uid="{FD6A0B2D-729B-474C-A5B1-A49BB1CC481D}">O.X2</connect> 
     </Out> 
     <Undirected /> 
     </connects> 
    </FunctionalBlock> 
    </FunctionalBlocks> 
    <SoftwareFunctions> 
    <SoftwareFunction uid="{FD6A0B2D-729B-474C-A5B1-A49BB1CC481D}" name="Software function.54"> 
     <props> 
     <prop name="Function Type">O</prop> 
     <prop name="Node" /> 
     <prop name="SAS System">C</prop> 
     <prop name="Shape Type">SoftwareFunction</prop> 
     </props> 
     <pos left="4.803149" top="16.377952" right="4.960629" bottom="16.220472" /> 
     <connects> 
     <In> 
      <connect input="" uid="{F720A6D5-3A87-4BF1-8D0D-43E6481481A9}">1FT002.AHH</connect> 
      <connect input="" uid="{C439DFA1-1A80-414E-9CF5-FBD7D3A4FA77}" /> 
     </In> 
     <Out> 
      <connect output="" uid="{AB65A176-9C8A-4F63-901E-715B4709FFE2}">1UV001.FSL</connect> 
     </Out> 
     <Undirected /> 
     </connects> 
    </SoftwareFunction> 
    <SoftwareFunction uid="{57B4BE80-66E7-4E19-AEA1-AC8EBA01B195}" name="Software function.51"> 
     <props> 
     <prop name="Function Type">&amp;</prop> 
     <prop name="Node" /> 
     <prop name="SAS System">C</prop> 
     <prop name="Shape Type">SoftwareFunction</prop> 
     </props> 
     <pos left="8.031496" top="16.377952" right="8.188976" bottom="16.220472" /> 
     <connects> 
     <In> 
      <connect input="" uid="{AB65A176-9C8A-4F63-901E-715B4709FFE2}">1UV001.BA</connect> 
      <connect input="" uid="{AB65A176-9C8A-4F63-901E-715B4709FFE2}">1UV001.Y</connect> 
     </In> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </SoftwareFunction> 
    </SoftwareFunctions> 
    <Uncategorizeds> 
    <Uncategorized uid="{9537F074-8384-4FBE-B24E-56260F192AF8}" name="General Signal.53"> 
     <props> 
     <prop name="Input Terminal">X1</prop> 
     <prop name="Output Terminal">AHH</prop> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node">01</prop> 
     </props> 
     <pos left="3.228346" top="16.978346" right="4.094488" bottom="16.639763" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{1D0469E0-F58F-44C4-9F26-B262052B2124}" name="General Signal.32"> 
     <props> 
     <prop name="Input Terminal">X2</prop> 
     <prop name="Output Terminal">AHH</prop> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node">01</prop> 
     </props> 
     <pos left="3.858267" top="16.220472" right="4.881889" bottom="15.905511" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{77599DF1-887F-4697-A7F9-7ACD90769333}" name="General Signal.35"> 
     <props> 
     <prop name="Input Terminal">FSL</prop> 
     <prop name="Output Terminal" /> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node" /> 
     </props> 
     <pos left="4.960629" top="16.663385" right="6.456692" bottom="16.299212" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{568DF49F-C484-4860-86FC-E373C5FBE5E5}" name="Transmitter.55"> 
     <props /> 
     <pos left="2.007874" top="15.787401" right="2.086614" bottom="15.551181" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{59D08AFC-056F-48A8-BD02-00FCA344CE0A}" name="General Signal.41"> 
     <props> 
     <prop name="Input Terminal">X</prop> 
     <prop name="Output Terminal" /> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node">01</prop> 
     </props> 
     <pos left="2.086614" top="15.875984" right="2.913385" bottom="15.649606" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{C439DFA1-1A80-414E-9CF5-FBD7D3A4FA77}" name="Timer"> 
     <props> 
     <prop name="Edge">Rising</prop> 
     <prop name="Delay">2 s</prop> 
     <prop name="Node" /> 
     <prop name="SAS System">C</prop> 
     <prop name="Shape Type">Pulse</prop> 
     </props> 
     <pos left="4.094488" top="16.777559" right="4.386333" bottom="16.450787" /> 
     <connects> 
     <In> 
      <connect input="" uid="{43FA5CE2-3A26-4276-AE30-54DFF4D28E36}">1FTT001.AHH</connect> 
     </In> 
     <Out> 
      <connect output="" uid="{FD6A0B2D-729B-474C-A5B1-A49BB1CC481D}">O.X1</connect> 
     </Out> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{39E51911-46FC-4873-AE6D-039877FB29DB}" name="General Signal.48"> 
     <props> 
     <prop name="Input Terminal">X1</prop> 
     <prop name="Output Terminal" /> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node" /> 
     </props> 
     <pos left="4.251968" top="16.767716" right="4.881889" bottom="16.377952" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{ACB6FB09-3CC4-418D-A398-400E4E54F8B3}" name="Heater"> 
     <props /> 
     <pos left="7.716535" top="15.866141" right="8.637795" bottom="15.511811" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{722E33C2-98BC-44E4-8BA5-19BA757889FE}" name="General Signal.58"> 
     <props> 
     <prop name="Input Terminal">X1</prop> 
     <prop name="Output Terminal">Y</prop> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node">01</prop> 
     </props> 
     <pos left="7.401574" top="16.663385" right="8.355797" bottom="16.358267" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{B4676D69-1D21-42FA-8B0D-12ABE6563DDC}" name="General Signal.61"> 
     <props> 
     <prop name="Input Terminal">X2</prop> 
     <prop name="Output Terminal">BA</prop> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node">01</prop> 
     </props> 
     <pos left="7.401574" top="16.505905" right="8.031496" bottom="16.240157" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{B33BA753-7E31-4D28-8991-6F79445BF0DC}" name="General Signal.64"> 
     <props> 
     <prop name="Input Terminal" /> 
     <prop name="Output Terminal">Y</prop> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node" /> 
     </props> 
     <pos left="7.811023" top="16.427165" right="8.372743" bottom="15.511811" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{41872BA8-4AE2-40DA-AE93-3A4BCBE24443}" name="Transmitter.67"> 
     <props /> 
     <pos left="1.889763" top="16.929133" right="1.968503" bottom="16.692913" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    <Uncategorized uid="{C699BDD4-6A8A-473F-9A50-4FFC0E23E0D1}" name="General Signal.70"> 
     <props> 
     <prop name="Input Terminal">X</prop> 
     <prop name="Output Terminal" /> 
     <prop name="Shape Type">GeneralSignal</prop> 
     <prop name="SAS System">C</prop> 
     <prop name="Node">01</prop> 
     </props> 
     <pos left="1.968503" top="17.017716" right="2.283464" bottom="16.771653" /> 
     <connects> 
     <In /> 
     <Out /> 
     <Undirected /> 
     </connects> 
    </Uncategorized> 
    </Uncategorizeds> 
</shapes> 
+0

有很多可能的答案,但也許你應該看看[XSD.EXE](https://msdn.microsoft.com/en-我們/庫/ x6c1kb0s(v = vs.110)的.aspx)。 –

回答

0

試試這個,希望這將工作在V

XmlDocument xmlDoc =new XmlDocument(); //Represents an XML document, 
       // Initializes a new instance of the XmlDocument class.   
     XmlSerializer xmlSerializer = new XmlSerializer(YourClassObject.GetType());    
    // Creates a stream whose backing store is memory. 
     using (MemoryStream xmlStream =new MemoryStream()) 
     { 
     xmlSerializer.Serialize(xmlStream, YourClassObject); 
     xmlStream.Position = 0; 
     //Loads the XML document from the specified string. 
     xmlDoc.Load(xmlStream); 
     return xmlDoc.InnerXml; 
     } 
} 

此方法將返回一個包含XML的字符串。

使用CreateXML方法。

string strView =CreateXML(YourClassObject); 

創建一個將XML轉換爲對象的方法。

public Object CreateObject(string XMLString,Object YourClassObject){    
    XmlSerializer oXmlSerializer =new XmlSerializer(YourClassObject.GetType()); 
    //The StringReader will be the stream holder for the existing XML file 
    YourClassObject = oXmlSerializer.Deserialize(new StringReader(XMLString)); 
//initially deserialized, the data is represented by an object without a defined type 
return YourClassObject; 
} 
} 

使用CreateObject方法:

Employee objemp = newEmployee(); 

objemp = (Employee)CreateObject(txtXML.Text, objemp) 
+0

我是否在某處創建了「YourClassObject」類? – Snovva1

+0

是的,首先你必須創建一個對象然後序列化它 –