1

XmlSerializer を使用して、ebay の大規模なマーチャント サービスで使用する xml ドキュメントを作成しています。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BulkDataExchangeRequests xmlns="urn:ebay:apis:eBLBaseComponents">
    <Header>
        <SiteID>0</SiteID>
        <Version>775</Version>
    </Header>
    <AddFixedPriceItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<Version>775</Version>

<Item>
    <AutoPay>false</AutoPay>
    <BuyerProtection>ItemIneligible</BuyerProtection>
    <BuyItNowPrice currencyID="USD">0.0</BuyItNowPrice>
    <Country>US</Country>
    <Currency>USD</Currency>
    <Description>test</Description>
    <GiftIcon>0</GiftIcon>
</Item>
</AddFixedPriceItemRequest>
</BulkDataExchangeRequests>

私が抱えている問題は、シリアライザーによって生成された AddFixedPriceItemRequest に、BulkDataExchangeRequests 要素のような xmlns を実際に含めることです。これが機能するための要件のようです。以下を使用して一括タグを生成します。

writer.WriteStartElement("BulkDataExchangeRequests", "urn:ebay:apis:eBLBaseComponents");

シリアライザを作成します。

serializer = new XmlSerializer(typeof(AddFixedPriceItemRequestType));//, "urn:ebay:apis:eBLBaseComponents");

名前空間でシリアル化します

request = new AddFixedPriceItemRequestType()
{
//populate data.
};

XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add("", "urn:ebay:apis:eBLBaseComponents");

serializer.Serialize(writer, request, namespaces);

これは、xml 属性を持つ型です。

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.5420")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:ebay:apis:eBLBaseComponents",TypeName="AddFixedPriceItemRequest")]
public partial class AddFixedPriceItemRequestType : AbstractRequestType {
//filled in class
}

私の出力は次のようになります。

<AddFixedPriceItemRequest xmlns="">
   <ErrorLanguage xmlns="urn:ebay:apis:eBLBaseComponents">en_US</ErrorLanguage>
    <Version xmlns="urn:ebay:apis:eBLBaseComponents">837</Version>
    <Item p4:type="Item" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:ebay:apis:eBLBaseComponents">

addfixedpriceitemrequest の xmlns をシリアライザー経由でバルク xmlns と一致するように設定する方法を教えてください。または、別の方法をお勧めします。createelement/writeelementで各プロパティを書き出さないようにしていました。

4

3 に答える 3

0

eBay では、Trade API でのみ名前空間の設定が必要です。1 つの解決策は、BulkDataExchange オブジェクトの名前空間設定を削除し、Trade API オブジェクトのみに名前空間設定を追加することです。これは標準の XML 形式ではありませんが、eBay ではこれしか受け付けていません。

あなたの場合、これはeBayにトリックを行うかもしれません:

writer.WriteStartElement("BulkDataExchangeRequests", "");
于 2014-07-02T23:21:44.997 に答える