2011-04-08 213 views
0

这里实现IXmlSerializable的是XML:帮助与此XML

<?xml version="1.0" encoding="utf-8" ?> 
<SAPPHIRE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <TRANSACTION-CODE>NEW</TRANSACTION-CODE> 
    <CUSTOMER-NUMBER>100398598</CUSTOMER-NUMBER> 
    <CUSTOMER-NAME>CART DUDE</CUSTOMER-NAME> 
    <ACCOUNT-TYPE /> 
    <PERSON FNAME="CART" LNAME="DUDE" RESPONSIBLITY="CART DUDE" /> 
    <SOURCE>cplestore</SOURCE> 
    <TRAN-REFERENCE>13374470</TRAN-REFERENCE> 
    <ORDER> 
    <ORDER-NUMBER NUMBER="00241662693" REFERENCE="13374470"> 
     <PRODUCT-CODE>DLP99022L</PRODUCT-CODE> 
     <START-DATE>2011-4-6 00:00:00.0</START-DATE> 
     <EXPIRE-DATE>2011-4-11 00:00:00.0</EXPIRE-DATE> 
     <MAX-USERS>1</MAX-USERS> 
     <ALLOWED-USERS>1</ALLOWED-USERS> 
     <PERSON FNAME="CART" LNAME="DUDE" RESPONSIBLITY="CART DUDE" /> 
    </ORDER-NUMBER> 
    </ORDER> 
</SAPPHIRE> 

我有DTO为:

public class Sapphire : IXmlSerializable 
{ 
public XmlSchema GetSchema() 
     { 
      return null; 
     } 

     public void ReadXml(XmlReader reader) 
     { 
      throw new NotImplementedException(); 
     } 

     public void WriteXml(XmlWriter writer) 
     { 
      throw new NotImplementedException(); 
     } 
} 

回答

0

实施IXmlSerializable是相当棘手的,可能容易出错(例如,你需要做确保你的代码正确地处理注释等事情)。对于这个示例,您应该只能使用XSD.exe生成一个使用属性来控制xml序列化的适当类。

您应该使用XSD.exe为您的示例x​​ml片段(您需要进行调整 - 如果您拥有现有的XSD架构,请跳过此步骤)生成架构,然后再次使用它来生成一个用于序列化的类。

如果你真的想要实现IXmlSerializable的请尝试以下资源: