私は通常、自分の答えをウェブで高低を検索しますが、今回は空白を描いています. VS2005 を使用して、コードを POST xml から API に記述しています。XML ドキュメントにシリアル化するクラスを C# でセットアップしています。クラスは以下のとおりです。
[Serializable]
[XmlRoot(Namespace = "", IsNullable = false)]
public class Request
{
public RequestIdentify Identify;
public string Method;
public string Params;
}
[Serializable]
public class RequestIdentify
{
public string StoreId;
public string Password;
}
これをシリアル化すると、次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Identify>
<StoreId>00</StoreId>
<Password>removed for security</Password>
</Identify>
<Method>ProductExport</Method>
<Params />
</Request>
しかし、API は「XML が送信されていません」というエラーを返します。
次のようにxmlを文字列で直接送信すると:
string xml = @"<Request><Identify><StoreId>00</StoreId><Password>Removed for security</Password></Identify><Method>ProductExport</Method><Params /></Request>";
このxmlを効果的に送信します(「リクエスト」タグにスキーマ情報はありません):
<Request>
<Identify>
<StoreId>00</StoreId>
<Password>Removed for security</Password>
</Identify>
<Method>ProductExport</Method>
<Params />
</Request>
XML は問題なく認識されているようです。
私の質問は、現在のクラスをシリアライズして XML に変更し、2 番目のケースのように XML を取得するにはどうすればよいかということです。既存のクラスをラップし、この「親」または同様のもので InnerXml プロパティを使用するには、別の「親」クラスが必要だと思いますが、これを行う方法がわかりません。
質問についてお詫び申し上げます。私は C# を 3 か月しか使用しておらず、仕事で独学しなければならない見習い開発者です。
ああ、PS 理由はわかりませんが、VS2005 では、これらのクラスをプライベート変数でセットアップしてから、同等のパブリック変数でゲッターとセッターを使用することを本当に望んでいません。
前もって感謝します :-)
アップデート:
ほとんどの場合と同様に、何を尋ねる必要があるか、またはどのように表現すればよいかわからない場合、答えを見つけるのは非常に困難ですが、次のようになります。
何を探すべきかがわかったら、必要な答えを見つけました。
XML 宣言の削除:
XmlWriterSettings writerSettings = new XmlWriterSettings();
writerSettings.OmitXmlDeclaration = true;
StringWriter stringWriter = new StringWriter();
using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, writerSettings))
{
serializer.Serialize(xmlWriter, request);
}
string xmlText = stringWriter.ToString();
名前空間の削除/設定 (これを見つけるのに役立つ上記の返信に感謝します!):
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
答えてくれた、または正しい方向に向けてくれたみんなの助けに感謝します! そして、はい、私が何を求めているのかがわかったら、読むべき記事を見つけました:-) 3か月の独学で行き詰まったのは初めてなので、かなりうまくやっていると思います...