首页 > 解决方案 > 如何在嵌套类中编写 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>

日滕德拉

标签: c#xml-parsing

解决方案


推荐阅读