c# - 如何在嵌套类中编写 Xml 命名空间
问题描述
我正在尝试将 XML 转换为以下格式,但无法弄清楚是否有人可以帮助我,这将是很大的帮助。
请在我的 XML 格式以下:
<MyFest
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/....objects">
<MyFestId>c54aab98-3c17-4bed-b97c-41e335b7266f</MyFestId>
<ShipDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-28T01:23:21.000-06:00</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</ShipDate>
<SubmittedDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-31T03:41:12.000-06:00</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</SubmittedDate>
<TrackingNumber>35B7266F</TrackingNumber>
<MyFestUser>
<UserId>15e05458-6332-489b-b1b0-e67becc739c4</UserId>
<FullName>SUPPORT, MyPegID</FullName>
<CompanyId>321578cc-e4ed-4d49-817b-c8525dc7b741</CompanyId>
<Email>test@MyPegid.com</Email>
<CompanyName>UniqueId sample</CompanyName>
</MyFestUser>
<SenderPartner>
<Address>sample</Address>
<FullName>UniqueId sample</FullName>
<LocationCode>UniqueId-01</LocationCode>
<MasterCompanyId i:nil="true"/>
<ParentPartnerId i:nil="true"/>
<ParentPartnerName i:nil="true"/>
<PartnerId>321578cc-e4ed-4d49-817b-c8525dc7b741</PartnerId>
<PartnerTypeCode>sample</PartnerTypeCode>
<PartnerTypeName>sample</PartnerTypeName>
<Lat>22.731974</Lat>
<Lon>-93.408151</Lon>
<isActive>true</isActive>
<isInternal>true</isInternal>
<isShared>false</isShared>
<Address1>1926 Lexington</Address1>
<State>sample</State>
<City>sample</City>
<PostalCode>73398</PostalCode>
</SenderPartner>
<SenderShipAddress>
<Line1>343 sample</Line1>
<Line2 i:nil="true"/>
<Line3 i:nil="true"/>
<Line4 i:nil="true"/>
<Line5 i:nil="true"/>
<City>sample</City>
<State>TX</State>
<PostalCode>22298</PostalCode>
<Country>sample</Country>
</SenderShipAddress>
<SenderBillAddress>
<Line1>1926 sample</Line1>
<Line2 i:nil="true"/>
<Line3 i:nil="true"/>
<Line4 i:nil="true"/>
<Line5 i:nil="true"/>
<City>sample</City>
<State>sample</State>
<PostalCode>34553</PostalCode>
<Country>sample</Country>
</SenderBillAddress>
<SenderContactName i:nil="true"/>
<SenderContactEmail i:nil="true"/>
<SenderContactPhone i:nil="true"/>
<SenderReferenceKey i:nil="true"/>
<SenderNotes i:nil="true"/>
<ReceiverContactName i:nil="true"/>
<ReceiverContactEmail i:nil="true"/>
<ReceiverContactPhone i:nil="true"/>
<ReceiverReferenceKey i:nil="true"/>
<ReceiverNotes i:nil="true"/>
<ReceiverPartner>
<Address>sample</Address>
<FullName>sample</FullName>
<LocationCode>sample</LocationCode>
<MasterCompanyId i:nil="true"/>
<ParentPartnerId>321578cc-e4ed-4d49-817b-c8525dc7b741</ParentPartnerId>
<ParentPartnerName>UniqueId sample</ParentPartnerName>
<PartnerId>75fdab69-ae55-47e7-8871-c3b714ff121e</PartnerId>
<PartnerTypeCode>sample</PartnerTypeCode>
<PartnerTypeName>sample</PartnerTypeName>
<Lat>43.789952</Lat>
<Lon>-25.830904</Lon>
<isActive>true</isActive>
<isInternal>true</isInternal>
<isShared>false</isShared>
<Address1>1106 sample road</Address1>
<State>sample</State>
<City>sample</City>
<PostalCode>sample</PostalCode>
</ReceiverPartner>
<ReceiverShipAddress>
<Line1>1106 sample road</Line1>
<Line2 i:nil="true"/>
<Line3 i:nil="true"/>
<Line4 i:nil="true"/>
<Line5 i:nil="true"/>
<City>sample</City>
<State>sample</State>
<PostalCode>74393</PostalCode>
<Country>sample</Country>
</ReceiverShipAddress>
<ReceiverBillAddress>
<Line1>1827 samplet</Line1>
<Line2 i:nil="true"/>
<Line3 i:nil="true"/>
<Line4 i:nil="true"/>
<Line5 i:nil="true"/>
<City>sample</City>
<State>sample</State>
<PostalCode>3522</PostalCode>
<Country>sample</Country>
</ReceiverBillAddress>
<MyFestItems>
<MyFestItem>
<MyFestItemId>673903c1-b664-e811-8128-0a624babb906</MyFestItemId>
<MyPeg>
<MyPegId>a5b7ffe4-ed7a-4d54-ae53-5bd9f54aa977</MyPegId>
<UniqueId>qqqqq</UniqueId>
<OwnerId>321578cc-e4ed-4d49-817b-c8525dc7b741</OwnerId>
<OwnerName>UniqueId sample</OwnerName>
<SizeName>sample</SizeName>
<TypeName>MyPeg</TypeName>
<Contents i:nil="true"/>
<LocationId>dae0b197-92cf-4ece-bcce-4924bc0abe98</LocationId>
<LocationName>UniqueId sample MyPegs</LocationName>
<ReceivedDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-31T03:40:27.000-06:00</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</ReceivedDate>
<PalletId>9fe67be6-5ef0-4877-bab3-c2e3b3a30174</PalletId>
<PalletName i:nil="true"/>
</MyPeg>
<Pallet>
<PalletId>9fe67be6-5ef0-4877-bab3-c2e3b3a30174</PalletId>
<UniqueId>00000100081513479995</UniqueId>
<OwnerId>321578cc-e4ed-4d49-817b-c8525dc7b741</OwnerId>
<OwnerName>UniqueId sample</OwnerName>
<LocationId i:nil="true"/>
<LocationName i:nil="true"/>
<ActiveCount>0</ActiveCount>
<BuildCount>2</BuildCount>
<CreateDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-31T09:41:13.000Z</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</CreateDate>
</Pallet>
<Contents i:nil="true"/>
<ContentsKey i:nil="true"/>
<ScanDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-31T03:40:27.000-06:00</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</ScanDate>
<Notes i:nil="true"/>
<Tags i:nil="true"/>
</MyFestItem>
<MyFestItem>
<MyFestItemId>683903c1-b664-e811-8128-0a624babb906</MyFestItemId>
<MyPeg>
<MyPegId>99d1f360-4249-4e8c-bf9c-955182f956ad</MyPegId>
<UniqueId>sample</UniqueId>
<OwnerId>321578cc-e4ed-4d49-817b-c8525dc7b741</OwnerId>
<OwnerName>UniqueId sample</OwnerName>
<SizeName>sample</SizeName>
<TypeName>MyPeg</TypeName>
<Contents i:nil="true"/>
<LocationId>dae0b197-92cf-4ece-bcce-4924bc0abe98</LocationId>
<LocationName>UniqueId sample MyPegs</LocationName>
<ReceivedDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-31T03:40:30.000-06:00</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</ReceivedDate>
<PalletId>9fe67be6-5ef0-4877-bab3-c2e3b3a30174</PalletId>
<PalletName i:nil="true"/>
</MyPeg>
<Pallet>
<PalletId>9fe67be6-5ef0-4877-bab3-c2e3b3a30174</PalletId>
<UniqueId>00000100081513479995</UniqueId>
<OwnerId>321578cc-e4ed-4d49-817b-c8525dc7b741</OwnerId>
<OwnerName>UniqueId sample</OwnerName>
<LocationId i:nil="true"/>
<LocationName i:nil="true"/>
<ActiveCount>0</ActiveCount>
<BuildCount>2</BuildCount>
<CreateDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-31T09:41:13.000Z</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</CreateDate>
</Pallet>
<Contents i:nil="true"/>
<ContentsKey i:nil="true"/>
<ScanDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-31T03:40:30.000-06:00</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</ScanDate>
<Notes i:nil="true"/>
<Tags i:nil="true"/>
</MyFestItem>
</MyFestItems>
<Tags>
<Tag>
<Property>sample</Property>
<Value>00000100081513479995</Value>
</Tag>
</Tags>
我已将所有这些字段转换为 C# 类,如 XML 到 C# 类转换器
然后我是序列化类,如:
public string Serialize(object obj)
{
try
{
var serializer = new XmlSerializer(obj.GetType());
var writerSettings =
new XmlWriterSettings
{
OmitXmlDeclaration = true,
Indent = true
};
var manifestNameSpace = new XmlSerializerNamespaces();
manifestNameSpace.Add("i", "http://www.w3.org/2001/XMLSchema-instance");
var shipDateNameSpace = new XmlSerializerNamespaces();
manifestNameSpace.Add("d2p1", "http://schemas.datacontract.org/2004/07/System");
var stringWriter = new StringWriter();
using (var xmlWriter = XmlWriter.Create(stringWriter, writerSettings))
{
serializer.Serialize(xmlWriter, obj, manifestNameSpace);
return stringWriter.ToString();
}
}
catch (System.Exception ex)
{
return string.Empty;
}
}
但这实际上并不能帮助我继续前进,请让我知道我错在哪里,或者是否有任何工具可以检查如何生成嵌套 xml。
问题是我无法生成这样的嵌套命名空间:
<ShipDate
xmlns:d2p1="http://schemas.datacontract.org/2004/07/System">
<d2p1:DateTime>2018-05-28T01:23:21.000-06:00</d2p1:DateTime>
<d2p1:OffsetMinutes>0</d2p1:OffsetMinutes>
</ShipDate>
日滕德拉
解决方案
推荐阅读
- matlab - 如何在 Matlab 中查看给定平面上的东西?
- ios - 汇编代码中的 iOS 12 错误 swift_getAssociatedTypeWitnessSlowImpl EXC_BAD_ACCESS
- javascript - 当对象键存在于javascript中另一个对象的数组中时,重构对象数据
- java - 如何创建一个不覆盖现有对象的新实例?
- ios - 如何将特定元素从数组传递到另一个视图或函数?迅速
- amazon-web-services - Amazon Cloudwatch Logs,解析函数的日期时间结果
- android - 如何设置通知渠道?
- python - 如何在不影响图像其余部分的情况下删除图像中的外圈?
- c++ - 连接一个 UDP 套接字,但仍然接收来自其他来源的数据报
- vb.net - 如何以不同的形式访问或控制面板 vb.net