【问题标题】:Help with implementing IXmlSerializable on this XML帮助在此 XML 上实现 IXmlSerializable
【发布时间】:2011-04-08 04:52:16
【问题描述】:

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

【问题讨论】:

    标签: asp.net xml serialization deserialization ixmlserializable


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 2011-08-27
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多