2017-12-13 19 views
1

System.Xml.Serializationを使用して、クラスをxdocumentにシリアル化しています。私は必要なものルートノードの下からすべての名前空間を削除します。

<tns:RatingRequest xmlns:tns="http://somewebsite/services/rating" 
xmlns:tns1="http://somewebsite/services/rating" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://somewebsite/services/rating.xsd "> 
    <tns:Configuration> 
     <tns:Client> 
     <tns:TradingPartnerNum>101010</tns:TradingPartnerNum> 
     </tns:Client> 
    </tns:Configuration> 
    <tns:PickupDate>2017-12-12T00:00:00</tns:PickupDate> 
    <tns:LatestDeliveryDate>0001-01-01T00:00:00</tns:LatestDeliveryDate> 
    <tns:Stops> 
     <tns:Index>1</tns:Index> 
    </tns:Stops> 
</tns:RatingRequest> 

は、TNSを持つ唯一の最初のノードである:

<tns:RatingRequest xmlns:tns="http://somewebsite/services/rating" 
xmlns:tns1="http://somewebsite/services/rating" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://somewebsite/services/rating.xsd "> 
    <Configuration> 
     <TradingPartner> 
     <TradingPartnerNum>101010</TradingPartnerNum> 
     </TradingPartner> 
    </Configuration> 
    <PickupDate>2017-10-27T00:00:00-05:00</PickupDate> 
    <DeliveryDate>-05:00</DeliveryDate> 
    <Stops> 
    <Stop> 
     <Index>1</Index> 
    </stop> 
    </stops> 
</tns:RatingRequest> 

のような名前空間には、これを行うためのクリーンな方法はありますか?

+0

2つのXMLフラグメントは異なるデータを記述します。子要素の名前空間は異なります。一番下のものを望むなら:*ルートネームスペースを使うように伝えます* –

答えて

2

xmlで必要なのは、子要素の名前空間が空の名前空間です。 ルート要素は"http://somewebsite/services/rating"にあり、デフォルトでは名前空間はです。です。したがって、子要素に使用するxmlシリアライザの属性には、Namespace = ""を含める必要があります。たとえば、あなたが持っている場合:

[XmlElement("PickupDate")] 
public DateTime SomeDate {get;set;} 

は、それはなる可能性があります:

[XmlElement("PickupDate", Namespace = "")] 
public DateTime SomeDate {get;set;} 

は、あなたが他の要素のためにそれを繰り返す必要があります。

+0

これは完璧でとても単純です。ありがとうございました! – tannerd

関連する問題