帮助在此XML上实现IXmlSerializable

时间:2011-04-08 04:52:16

标签: asp.net xml serialization deserialization ixmlserializable

这是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();
        }
}

1 个答案:

答案 0 :(得分:0)

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

你应该使用XSD.exe为你的示例xml片段生成一个模式(你需要调整它 - 如果你有一个现有的XSD模式然后跳过这一步),然后再次使用它来生成一个类到用于序列化。

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