0

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

1 に答える 1

0

実装IXmlSerializableはかなりトリッキーで、エラーが発生しやすい可能性があります (たとえば、コードがコメントなどを正しく処理するようにする必要があります)。この例では、XSD.exe を使用して、属性を使用して xml シリアル化を制御する適切なクラスを生成できるはずです。

XSD.exeを使用してサンプル xml フラグメントのスキーマを生成し (微調整する必要があります。既存の XSD スキーマがある場合は、この手順をスキップします)、それを再度使用して、シリアル化に使用するクラスを生成します。

本当に IXmlSerializable を実装したい場合は、次のリソースを試してください。

于 2011-04-08T04:56:33.120 に答える