2011-07-14 30 views
3

質問:このXMLコンテンツのシリアル化のクラスはどのように見えるのですか?XMLを奇妙な名前空間でシリアル化していますか?

<?xml version="1.0" encoding="utf-8"?> 
<vcc:CreateTextSearchResponse xmlns:vcc="urn:veloconnect:catalog-1.1" xmlns:vct="urn:veloconnect:transaction-1.0"> 
    <vct:BuyersID>12345</vct:BuyersID> 
    <vct:ResponseCode>200</vct:ResponseCode> 
    <vct:TransactionID>225</vct:TransactionID> 
    <vct:StatusCode>2</vct:StatusCode> 
    <vct:IsTest>false</vct:IsTest> 
    <vcc:TotalCount>3876</vcc:TotalCount> 
</vcc:CreateTextSearchResponse> 

xsd.exeを実行すると、エラーが発生します。

私は何の問題。この生成持っていません:

<?xml version="1.0" encoding="utf-8"?> 
<CreateTextSearchResponse> 
    <BuyersID>15942</BuyersID> 
    <ResponseCode>200</ResponseCode> 
    <TransactionID>225</TransactionID> 
    <StatusCode>2</StatusCode> 
    <IsTest>false</IsTest> 
    <TotalCount>3876</TotalCount> 
</CreateTextSearchResponse> 

それは私がそれをデシリアライズ(およびそれ以降再シリアライズに)するためにこれらの名前空間を必要とすることだけですので、私はちょうど(それがで必要なのは、このようにそれを残すことはできませんがサードパーティのWebサービス)...

+3

"エラーが発生します。質問で言うと最悪のことです。私達に***それが言う***正確に何を教えてください。 –

+0

それはひどいことを言います、それのどれも全く意味をなさない。 –

答えて

5

を扱うことができないというあなたな名前空間に特殊文字があります。

[XmlRoot(Namespace = CreateTextSearchResponse.CatalogNamespace)] 
public class CreateTextSearchResponse 
{ 
    public const string CatalogNamespace = "urn:veloconnect:catalog-1.1", 
       TransactionNamespace = "urn:veloconnect:transaction-1.0"; 
    [XmlElement(Namespace=TransactionNamespace)] 
    public int BuyersId { get; set; } 
    [XmlElement(Namespace = TransactionNamespace)] 
    public int ResponseCode { get; set; } 
    [XmlElement(Namespace = TransactionNamespace)] 
    public int TransactionID { get; set; } 
    [XmlElement(Namespace = TransactionNamespace)] 
    public int StatusCode { get; set; } 
    [XmlElement(Namespace = TransactionNamespace)] 
    public bool IsTest { get; set; } 
    [XmlElement(Namespace = CatalogNamespace)] 
    public int TotalCount { get; set; } 
} 

public static void Main() 
{ 
    var ser = new XmlSerializer(typeof(CreateTextSearchResponse)); 
    var obj = new CreateTextSearchResponse 
    { 
     BuyersId = 12345, 
     ResponseCode = 200, 
     TransactionID = 225, 
     StatusCode = 2, 
     IsTest = false, 
     TotalCount = 3876 
    }; 
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
    ns.Add("vcc", CreateTextSearchResponse.CatalogNamespace); 
    ns.Add("vct", CreateTextSearchResponse.TransactionNamespace); 
    ser.Serialize(Console.Out, obj, ns); 
} 
+0

ああ、私は最後に、ns.Addの最初のパラメータが何であるかを理解しました。 –

-1

残念ながらXMLはこのよう

+0

あなたはそれが無効なXMLであることを意味しますか? –

+0

申し訳ありません。 2番目の一見で私は名前空間に特殊文字を見ることができないので、XMLが有効であるように見える – saj

+0

いいえ、ありません。このXMLは問題ありません。 –

関連する問題