gpt4 book ai didi

.net - 删除根节点下的所有命名空间

转载 作者:行者123 更新时间:2023-12-04 16:53:17 25 4
gpt4 key购买 nike

我正在使用 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>

有没有一种干净的方法来做到这一点?

最佳答案

这里的技巧是在你想要的 xml 中,子元素的命名空间是空的命名空间。您的根元素在 "http://somewebsite/services/rating" 中, 默认情况下继承命名空间;所以:你需要包括 Namespace = ""在您用于子元素的任何 xml 序列化程序属性上。例如,如果您有:

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

那么它可能会变成:
[XmlElement("PickupDate", Namespace = "")]
public DateTime SomeDate {get;set;}

您将需要对其他元素重复此操作。

关于.net - 删除根节点下的所有命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47797466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com