没有得到XML的所有节点值

时间:2017-08-09 10:58:20

标签: c# .net xml c#-4.0

我有一个XML,我希望获得所有节点值。但是在Deserialize之后我在我的订单节点和内部节点中变为null,你能否告诉我我在做什么错误。

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
    <Order Notes="Test Order" PackageTypeID="0" Service="Quote" CallerPhone="" CustomerCode="GA" Caller="" CalledBy="" CheckPiecesWeight="Y" ForceReRateFlag="True" RouteNumber="" OrderDate="08/04/2017" Auth="" Requestor="CVS - Lenexa" UserGUID="{788888-4555-4444-5455-55555}" GetUserGUIDDataCalledBy="Oreser" WebUserID="254282" UserName="TREW" ChangeOps="0" OrderID="1803019" OrderGUID="{6454546-ABD0-91CA-841D75A363CB}" Origin="W" OrderNumber="2718140" OrderDateTime="08/04/2017 10:00" CreateDate="08/09/17 00:31" DimWeightFactor="0" Pieces="1" Weight="0" RouteZone="LAX" CustomerGroup="" ServiceID="0" TotalMiles="0" AmountCharged="$0.00" DriverPayXML="1" CarrierTypeID="1" DueDateTime="8/4/2017 10:00:00 AM" PickedUpDateTime="" DeliveredDateTime="" OperationalStatus="N" saveorderpieceactionstatus="0" AmountChargedChanged="True">
        <Stops>
            <Stop Sequence="1" StopType="P" Note="" Name="UPS" Address="Adreena St" City="Vansrn NIRC" State="CA" Zip="98741" Phone="" EarlyDateTime="" ScheduledDateTime="8/4/2017 10:00:00 AM" LateDateTime="" AVSQuality="1" Latitude="74.213827" Longitude="-418.481529" DispatchZoneFound="True" Pieces="1" Weight="0">
                <OrderStopPieces>
                    <OrderStopPiece Sequence="1" PieceAction="P" PieceID="714" OrderStopPieceID="1444"/>
                </OrderStopPieces>
            </Stop>
            <Stop Sequence="2" StopType="D" Note="" Name="CCR Nicla" Address="S.BOSE STREET" City="ARI GUTS" State="CA" Zip="94125" Phone="1 (800) 360-0520" EarlyDateTime="" ScheduledDateTime="8/4/2017 10:00:00 AM" LateDateTime="" AVSQuality="1" Latitude="24.201719" Longitude="-17.491973" DispatchZoneFound="True" Pieces="0" Weight="0">
                <OrderStopPieces>
                    <OrderStopPiece Sequence="1" PieceAction="D" PieceID="714" OrderStopPieceID="144"/>
                </OrderStopPieces>
            </Stop>
        </Stops>
        <Pieces>
            <Piece Sequence="1" Pieces="1" Weight="" Description="" ContainerReference="" Reference="1111" PieceID="1111"/>
        </Pieces>
        <OrderEvents>
            <OrderEvent EventType="MYOrder" Note="Test" Add="True" EventDateTime="8/9/2017 12:31:08 AM" UserName="MMPIO"/>
            <OrderEvent EventType="New" Note="" EventDateTime="8/9/2017 12:21:08 AM" UserName="MMPIO"/>
        </OrderEvents>
        <Site SiteID="13" CompanyID="1008" SiteCode="MMM" SiteType="C" Name="FOO" DBAName="KMI" Address="JHHHH" City="ARIZoNA" State="AR" Zip="125487" Message=" MUT" ARAccountNumber="15470" ARDeptNumber="741" APAccountNumber="14720" APDeptNumber="1" BankAccountNumber="5001" BankDeptNumber="1" DispatchNote="" PaymentGatewayID="0" MName="" MAddress="" MCity="" MState="" MZip="" LogoImageID="0" SiteStatus="C"/>
        <OrderFees>
            <OrderFee FeeTitle="TS" FeeCode="VS"/>
            <OrderFee FeeTitle="WEEE DDEA" FeeCode="QE"/>

        </OrderFees>
        <OrderNotifies/>
    </Order>
</SOAP:Body>

反序列化的类

 [XmlRoot(ElementName="OrderStopPiece")]
public class OrderStopPiece {
    [XmlAttribute(AttributeName="Sequence")]
    public string Sequence { get; set; }
    [XmlAttribute(AttributeName="PieceAction")]
    public string PieceAction { get; set; }
    [XmlAttribute(AttributeName="PieceID")]
    public string PieceID { get; set; }
    [XmlAttribute(AttributeName="OrderStopPieceID")]
    public string OrderStopPieceID { get; set; }
}

[XmlRoot(ElementName="OrderStopPieces")]
public class OrderStopPieces {
    [XmlElement(ElementName="OrderStopPiece")]
    public OrderStopPiece OrderStopPiece { get; set; }
}

[XmlRoot(ElementName="Stop")]
public class Stop {
    [XmlElement(ElementName="OrderStopPieces")]
    public OrderStopPieces OrderStopPieces { get; set; }
    [XmlAttribute(AttributeName="Sequence")]
    public string Sequence { get; set; }
    [XmlAttribute(AttributeName="StopType")]
    public string StopType { get; set; }
    [XmlAttribute(AttributeName="Note")]
    public string Note { get; set; }
    [XmlAttribute(AttributeName="Name")]
    public string Name { get; set; }
    [XmlAttribute(AttributeName="Address")]
    public string Address { get; set; }
    [XmlAttribute(AttributeName="City")]
    public string City { get; set; }
    [XmlAttribute(AttributeName="State")]
    public string State { get; set; }
    [XmlAttribute(AttributeName="Zip")]
    public string Zip { get; set; }
    [XmlAttribute(AttributeName="Phone")]
    public string Phone { get; set; }
    [XmlAttribute(AttributeName="EarlyDateTime")]
    public string EarlyDateTime { get; set; }
    [XmlAttribute(AttributeName="ScheduledDateTime")]
    public string ScheduledDateTime { get; set; }
    [XmlAttribute(AttributeName="LateDateTime")]
    public string LateDateTime { get; set; }
    [XmlAttribute(AttributeName="AVSQuality")]
    public string AVSQuality { get; set; }
    [XmlAttribute(AttributeName="Latitude")]
    public string Latitude { get; set; }
    [XmlAttribute(AttributeName="Longitude")]
    public string Longitude { get; set; }
    [XmlAttribute(AttributeName="DispatchZoneFound")]
    public string DispatchZoneFound { get; set; }
    [XmlAttribute(AttributeName="Pieces")]
    public string Pieces { get; set; }
    [XmlAttribute(AttributeName="Weight")]
    public string Weight { get; set; }
}

[XmlRoot(ElementName="Stops")]
public class Stops {
    [XmlElement(ElementName="Stop")]
    public List<Stop> Stop { get; set; }
}

[XmlRoot(ElementName="Piece")]
public class Piece {
    [XmlAttribute(AttributeName="Sequence")]
    public string Sequence { get; set; }
    [XmlAttribute(AttributeName="Pieces")]
    public string Pieces { get; set; }
    [XmlAttribute(AttributeName="Weight")]
    public string Weight { get; set; }
    [XmlAttribute(AttributeName="Description")]
    public string Description { get; set; }
    [XmlAttribute(AttributeName="ContainerReference")]
    public string ContainerReference { get; set; }
    [XmlAttribute(AttributeName="Reference")]
    public string Reference { get; set; }
    [XmlAttribute(AttributeName="PieceID")]
    public string PieceID { get; set; }
}

[XmlRoot(ElementName="Pieces")]
public class Pieces {
    [XmlElement(ElementName="Piece")]
    public Piece Piece { get; set; }
}

[XmlRoot(ElementName="OrderEvent")]
public class OrderEvent {
    [XmlAttribute(AttributeName="EventType")]
    public string EventType { get; set; }
    [XmlAttribute(AttributeName="Note")]
    public string Note { get; set; }
    [XmlAttribute(AttributeName="Add")]
    public string Add { get; set; }
    [XmlAttribute(AttributeName="EventDateTime")]
    public string EventDateTime { get; set; }
    [XmlAttribute(AttributeName="UserName")]
    public string UserName { get; set; }
}

[XmlRoot(ElementName="OrderEvents")]
public class OrderEvents {
    [XmlElement(ElementName="OrderEvent")]
    public List<OrderEvent> OrderEvent { get; set; }
}

[XmlRoot(ElementName="Site")]
public class Site {
    [XmlAttribute(AttributeName="SiteID")]
    public string SiteID { get; set; }
    [XmlAttribute(AttributeName="CompanyID")]
    public string CompanyID { get; set; }
    [XmlAttribute(AttributeName="SiteCode")]
    public string SiteCode { get; set; }
    [XmlAttribute(AttributeName="SiteType")]
    public string SiteType { get; set; }
    [XmlAttribute(AttributeName="Name")]
    public string Name { get; set; }
    [XmlAttribute(AttributeName="DBAName")]
    public string DBAName { get; set; }
    [XmlAttribute(AttributeName="Address")]
    public string Address { get; set; }
    [XmlAttribute(AttributeName="City")]
    public string City { get; set; }
    [XmlAttribute(AttributeName="State")]
    public string State { get; set; }
    [XmlAttribute(AttributeName="Zip")]
    public string Zip { get; set; }
    [XmlAttribute(AttributeName="Message")]
    public string Message { get; set; }
    [XmlAttribute(AttributeName="ARAccountNumber")]
    public string ARAccountNumber { get; set; }
    [XmlAttribute(AttributeName="ARDeptNumber")]
    public string ARDeptNumber { get; set; }
    [XmlAttribute(AttributeName="APAccountNumber")]
    public string APAccountNumber { get; set; }
    [XmlAttribute(AttributeName="APDeptNumber")]
    public string APDeptNumber { get; set; }
    [XmlAttribute(AttributeName="BankAccountNumber")]
    public string BankAccountNumber { get; set; }
    [XmlAttribute(AttributeName="BankDeptNumber")]
    public string BankDeptNumber { get; set; }
    [XmlAttribute(AttributeName="DispatchNote")]
    public string DispatchNote { get; set; }
    [XmlAttribute(AttributeName="PaymentGatewayID")]
    public string PaymentGatewayID { get; set; }
    [XmlAttribute(AttributeName="MName")]
    public string MName { get; set; }
    [XmlAttribute(AttributeName="MAddress")]
    public string MAddress { get; set; }
    [XmlAttribute(AttributeName="MCity")]
    public string MCity { get; set; }
    [XmlAttribute(AttributeName="MState")]
    public string MState { get; set; }
    [XmlAttribute(AttributeName="MZip")]
    public string MZip { get; set; }
    [XmlAttribute(AttributeName="LogoImageID")]
    public string LogoImageID { get; set; }
    [XmlAttribute(AttributeName="SiteStatus")]
    public string SiteStatus { get; set; }
}

[XmlRoot(ElementName="OrderFee")]
public class OrderFee {
    [XmlAttribute(AttributeName="FeeTitle")]
    public string FeeTitle { get; set; }
    [XmlAttribute(AttributeName="FeeCode")]
    public string FeeCode { get; set; }
}

[XmlRoot(ElementName="OrderFees")]
public class OrderFees {
    [XmlElement(ElementName="OrderFee")]
    public List<OrderFee> OrderFee { get; set; }
}

[XmlRoot(ElementName="Order")]
public class Order {
    [XmlElement(ElementName="Stops")]
    public Stops Stops { get; set; }
    [XmlElement(ElementName="Pieces")]
    public Pieces Pieces { get; set; }
    [XmlAttribute(AttributeName="Pieces")]
    public string _Pieces { get; set; }
    [XmlElement(ElementName="OrderEvents")]
    public OrderEvents OrderEvents { get; set; }
    [XmlElement(ElementName="Site")]
    public Site Site { get; set; }
    [XmlElement(ElementName="OrderFees")]
    public OrderFees OrderFees { get; set; }
    [XmlElement(ElementName="OrderNotifies")]
    public string OrderNotifies { get; set; }
    [XmlAttribute(AttributeName="Notes")]
    public string Notes { get; set; }
    [XmlAttribute(AttributeName="PackageTypeID")]
    public string PackageTypeID { get; set; }
    [XmlAttribute(AttributeName="Service")]
    public string Service { get; set; }
    [XmlAttribute(AttributeName="CallerPhone")]
    public string CallerPhone { get; set; }
    [XmlAttribute(AttributeName="CustomerCode")]
    public string CustomerCode { get; set; }
    [XmlAttribute(AttributeName="Caller")]
    public string Caller { get; set; }
    [XmlAttribute(AttributeName="CalledBy")]
    public string CalledBy { get; set; }
    [XmlAttribute(AttributeName="CheckPiecesWeight")]
    public string CheckPiecesWeight { get; set; }
    [XmlAttribute(AttributeName="ForceReRateFlag")]
    public string ForceReRateFlag { get; set; }
    [XmlAttribute(AttributeName="RouteNumber")]
    public string RouteNumber { get; set; }
    [XmlAttribute(AttributeName="OrderDate")]
    public string OrderDate { get; set; }
    [XmlAttribute(AttributeName="Auth")]
    public string Auth { get; set; }
    [XmlAttribute(AttributeName="Requestor")]
    public string Requestor { get; set; }
    [XmlAttribute(AttributeName="UserGUID")]
    public string UserGUID { get; set; }
    [XmlAttribute(AttributeName="GetUserGUIDDataCalledBy")]
    public string GetUserGUIDDataCalledBy { get; set; }
    [XmlAttribute(AttributeName="WebUserID")]
    public string WebUserID { get; set; }
    [XmlAttribute(AttributeName="UserName")]
    public string UserName { get; set; }
    [XmlAttribute(AttributeName="ChangeOps")]
    public string ChangeOps { get; set; }
    [XmlAttribute(AttributeName="OrderID")]
    public string OrderID { get; set; }
    [XmlAttribute(AttributeName="OrderGUID")]
    public string OrderGUID { get; set; }
    [XmlAttribute(AttributeName="Origin")]
    public string Origin { get; set; }
    [XmlAttribute(AttributeName="OrderNumber")]
    public string OrderNumber { get; set; }
    [XmlAttribute(AttributeName="OrderDateTime")]
    public string OrderDateTime { get; set; }
    [XmlAttribute(AttributeName="CreateDate")]
    public string CreateDate { get; set; }
    [XmlAttribute(AttributeName="DimWeightFactor")]
    public string DimWeightFactor { get; set; }
    [XmlAttribute(AttributeName="Weight")]
    public string Weight { get; set; }
    [XmlAttribute(AttributeName="RouteZone")]
    public string RouteZone { get; set; }
    [XmlAttribute(AttributeName="CustomerGroup")]
    public string CustomerGroup { get; set; }
    [XmlAttribute(AttributeName="ServiceID")]
    public string ServiceID { get; set; }
    [XmlAttribute(AttributeName="TotalMiles")]
    public string TotalMiles { get; set; }
    [XmlAttribute(AttributeName="AmountCharged")]
    public string AmountCharged { get; set; }
    [XmlAttribute(AttributeName="DriverPayXML")]
    public string DriverPayXML { get; set; }
    [XmlAttribute(AttributeName="CarrierTypeID")]
    public string CarrierTypeID { get; set; }
    [XmlAttribute(AttributeName="DueDateTime")]
    public string DueDateTime { get; set; }
    [XmlAttribute(AttributeName="PickedUpDateTime")]
    public string PickedUpDateTime { get; set; }
    [XmlAttribute(AttributeName="DeliveredDateTime")]
    public string DeliveredDateTime { get; set; }
    [XmlAttribute(AttributeName="OperationalStatus")]
    public string OperationalStatus { get; set; }
    [XmlAttribute(AttributeName="saveorderpieceactionstatus")]
    public string Saveorderpieceactionstatus { get; set; }
    [XmlAttribute(AttributeName="AmountChargedChanged")]
    public string AmountChargedChanged { get; set; }
}

[XmlRoot(ElementName="Body", Namespace="http://schemas.xmlsoap.org/soap/envelope/")]
public class Body {
    [XmlElement(ElementName="Order")]
    public Order Order { get; set; }
}

[XmlRoot(ElementName="Envelope", Namespace="http://schemas.xmlsoap.org/soap/envelope/")]
public class Envelope {
    [XmlElement(ElementName="Body", Namespace="http://schemas.xmlsoap.org/soap/envelope/")]
    public Body Body { get; set; }
    [XmlAttribute(AttributeName="SOAP", Namespace="http://www.w3.org/2000/xmlns/")]
    public string SOAP { get; set; }
}

我的代码:

// str中的响应xml

XmlSerializer serializer = new XmlSerializer(typeof(SaveResponseObject.Envelope));
        using (TextReader reader = new StringReader(str))
        {
            SaveResponseObject.Envelope result = (SaveResponseObject.Envelope)serializer.Deserialize(reader);
        }

1 个答案:

答案 0 :(得分:1)

将Bodyspace =“”添加到Body类的Order属性中。应该没问题。

[XmlRoot(ElementName = "Body", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Body
{
    [XmlElement(ElementName = "Order", Namespace = "")]
    public Order Order { get; set; }
}