Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析web服务响应返回的xml_C#_Web Services_Xml Parsing - Fatal编程技术网

C# 解析web服务响应返回的xml

C# 解析web服务响应返回的xml,c#,web-services,xml-parsing,C#,Web Services,Xml Parsing,我已经读了很多关于这个话题的问题,但我似乎和我想做的事情有关。基本上,我调用一个web服务来返回有关车辆识别号(VIN)的信息。它返回如下所示的xml流: <VINquery Version="1.0.0" Date="5/25/2003"> <VIN Number="1HGES15501Lxxxxxx" Status="SUCCESS"> <Vehicle VINquery_Vehicle_ID="23261" Model_Year="2001" Ma

我已经读了很多关于这个话题的问题,但我似乎和我想做的事情有关。基本上,我调用一个web服务来返回有关车辆识别号(VIN)的信息。它返回如下所示的xml流:

<VINquery Version="1.0.0" Date="5/25/2003">
  <VIN Number="1HGES15501Lxxxxxx" Status="SUCCESS">
    <Vehicle VINquery_Vehicle_ID="23261" Model_Year="2001" Make="Honda" Model="Civic" Trim_Level="LX Sedan">
      <Item Key="VINquery Vehicle ID" Value="23261" Unit=""/>
      <Item Key="Model Year" Value="2001" Unit=""/>
      <Item Key="Make" Value="Honda" Unit=""/>
      <Item Key="Model" Value="Civic" Unit=""/>
      <Item Key="Trim Level" Value="LX Sedan" Unit=""/>
      <Item Key="Manufactured in" Value="UNITED STATES" Unit=""/>
      <Item Key="Production Seq. Number" Value="xxxxxx" Unit=""/>
      <Item Key="Body Style" Value="SEDAN 4-DR" Unit=""/>
      <Item Key="Engine Type" Value="1.7L L4 SOHC 16V" Unit=""/>
      <Item Key="Transmission-short" Value="5M OD" Unit=""/>
      <Item Key="Transmission-long" Value="5-Speed Manual Overdrive" Unit=""/>
      <Item Key="Driveline" Value="FWD" Unit=""/>
      <Item Key="Tank" Value="13.20" Unit="gallon"/>
      <Item Key="Fuel Economy-city" Value="30 - 32" Unit="miles/gallon"/>
      <Item Key="Fuel Economy-highway" Value="38 - 39" Unit="miles/gallon"/>
      <Item Key="Anti-Brake System" Value="Non-ABS" Unit=""/>
      <Item Key="Steering Type" Value="R&P" Unit=""/>
      <Item Key="Standard Seating" Value="5" Unit=""/>
      <Item Key="Optional Seating" Value="No data" Unit=""/>
      <Item Key="Length" Value="174.60" Unit="in."/>
      <Item Key="Width" Value="67.50" Unit="in."/>
      <Item Key="Height" Value="56.70" Unit="in."/>
    </Vehicle>
  </VIN>
</VINquery>
在我得到xmlDoc之后,我不确定下一步该怎么做


感谢您的帮助。

您可以使用Linq to xml将xml解析为
字典

var xdoc = XDocument.Parse(xml);
var items = xdoc.Descendants("Item")
                .ToDictionary(i => (string)i.Attribute("Key"),
                              i => (string)i.Attribute("Value"));
用法:

string driveline = items["Driveline"];


我通常使用另一种方法来处理xml

步骤1:复制xml字符串并粘贴为类

粘贴时,将自动生成此代码:

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
        public partial class VINquery
        {

            private VINqueryVIN vINField;

            private string versionField;

            private string dateField;

            /// <remarks/>
            public VINqueryVIN VIN
            {
                get
                {
                    return this.vINField;
                }
                set
                {
                    this.vINField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Version
            {
                get
                {
                    return this.versionField;
                }
                set
                {
                    this.versionField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Date
            {
                get
                {
                    return this.dateField;
                }
                set
                {
                    this.dateField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        public partial class VINqueryVIN
        {

            private VINqueryVINVehicle vehicleField;

            private string numberField;

            private string statusField;

            /// <remarks/>
            public VINqueryVINVehicle Vehicle
            {
                get
                {
                    return this.vehicleField;
                }
                set
                {
                    this.vehicleField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Number
            {
                get
                {
                    return this.numberField;
                }
                set
                {
                    this.numberField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Status
            {
                get
                {
                    return this.statusField;
                }
                set
                {
                    this.statusField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        public partial class VINqueryVINVehicle
        {

            private VINqueryVINVehicleItem[] itemField;

            private ushort vINquery_Vehicle_IDField;

            private ushort model_YearField;

            private string makeField;

            private string modelField;

            private string trim_LevelField;

            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute("Item")]
            public VINqueryVINVehicleItem[] Item
            {
                get
                {
                    return this.itemField;
                }
                set
                {
                    this.itemField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public ushort VINquery_Vehicle_ID
            {
                get
                {
                    return this.vINquery_Vehicle_IDField;
                }
                set
                {
                    this.vINquery_Vehicle_IDField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public ushort Model_Year
            {
                get
                {
                    return this.model_YearField;
                }
                set
                {
                    this.model_YearField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Make
            {
                get
                {
                    return this.makeField;
                }
                set
                {
                    this.makeField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Model
            {
                get
                {
                    return this.modelField;
                }
                set
                {
                    this.modelField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Trim_Level
            {
                get
                {
                    return this.trim_LevelField;
                }
                set
                {
                    this.trim_LevelField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        public partial class VINqueryVINVehicleItem
        {

            private string keyField;

            private string valueField;

            private string unitField;

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Key
            {
                get
                {
                    return this.keyField;
                }
                set
                {
                    this.keyField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Value
            {
                get
                {
                    return this.valueField;
                }
                set
                {
                    this.valueField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Unit
            {
                get
                {
                    return this.unitField;
                }
                set
                {
                    this.unitField = value;
                }
            }
        }
//
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace=”“,IsNullable=false)]
公共部分类查询
{
文菲尔德私人酒店;
私有字符串版本字段;
私有字符串日期字段;
/// 
公共葡萄酒
{
得到
{
把这个还给温菲尔德;
}
设置
{
this.vINField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串版本
{
得到
{
返回此.version字段;
}
设置
{
this.versionField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串日期
{
得到
{
返回此.dateField;
}
设置
{
this.dateField=值;
}
}
}
/// 
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
公共部分类VINqueryVIN
{
私家车辆场;
私有字符串数字字段;
私有字符串状态字段;
/// 
公共车辆
{
得到
{
把这辆车还给我;
}
设置
{
此.vehicleField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串号
{
得到
{
返回此.numberField;
}
设置
{
this.numberField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串状态
{
得到
{
返回此.status字段;
}
设置
{
this.statusField=值;
}
}
}
/// 
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
公共部分类车辆
{
私有VinQueryInvehicleItem[]项目字段;
私人汽车场;
私人ushort模型_YearField;
私有字符串makeField;
私有字符串模型字段;
私有字符串修剪_LevelField;
/// 
[System.Xml.Serialization.xmlementAttribute(“项”)]
公共VIN发票项目[]项目
{
得到
{
返回此.itemField;
}
设置
{
this.itemField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共ushort VINquery_车辆识别码
{
得到
{
返回此.vINquery_Vehicle_IDField;
}
设置
{
this.vINquery\u Vehicle\u IDField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共ushort车型年
{
得到
{
返回此.model_YearField;
}
设置
{
this.model_YearField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串生成
{
得到
{
返回这个.makeField;
}
设置
{
this.makeField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串模型
{
得到
{
返回此.modelField;
}
设置
{
this.modelField=值;
}
}
/// 
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串微调水平
{
得到
{
返回此.trim_LevelField;
}
设置
{
this.trim_LevelField=值;
}
}
}
/// 
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
公共部分类VINqueryVINVehicl
foreach(var kvp in items)
    // use key value pair
XmlDocument xmldoc = new XmlDocument();
XmlNodeList xmlnodelstTrack = xmldoc.GetElementsByTagName("Item");
foreach (XmlNode NodeObj in xmlnodelstTrack)
{
  //Do stuff with NodeObj.OuterXml

}
        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
        public partial class VINquery
        {

            private VINqueryVIN vINField;

            private string versionField;

            private string dateField;

            /// <remarks/>
            public VINqueryVIN VIN
            {
                get
                {
                    return this.vINField;
                }
                set
                {
                    this.vINField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Version
            {
                get
                {
                    return this.versionField;
                }
                set
                {
                    this.versionField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Date
            {
                get
                {
                    return this.dateField;
                }
                set
                {
                    this.dateField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        public partial class VINqueryVIN
        {

            private VINqueryVINVehicle vehicleField;

            private string numberField;

            private string statusField;

            /// <remarks/>
            public VINqueryVINVehicle Vehicle
            {
                get
                {
                    return this.vehicleField;
                }
                set
                {
                    this.vehicleField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Number
            {
                get
                {
                    return this.numberField;
                }
                set
                {
                    this.numberField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Status
            {
                get
                {
                    return this.statusField;
                }
                set
                {
                    this.statusField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        public partial class VINqueryVINVehicle
        {

            private VINqueryVINVehicleItem[] itemField;

            private ushort vINquery_Vehicle_IDField;

            private ushort model_YearField;

            private string makeField;

            private string modelField;

            private string trim_LevelField;

            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute("Item")]
            public VINqueryVINVehicleItem[] Item
            {
                get
                {
                    return this.itemField;
                }
                set
                {
                    this.itemField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public ushort VINquery_Vehicle_ID
            {
                get
                {
                    return this.vINquery_Vehicle_IDField;
                }
                set
                {
                    this.vINquery_Vehicle_IDField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public ushort Model_Year
            {
                get
                {
                    return this.model_YearField;
                }
                set
                {
                    this.model_YearField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Make
            {
                get
                {
                    return this.makeField;
                }
                set
                {
                    this.makeField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Model
            {
                get
                {
                    return this.modelField;
                }
                set
                {
                    this.modelField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Trim_Level
            {
                get
                {
                    return this.trim_LevelField;
                }
                set
                {
                    this.trim_LevelField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
        public partial class VINqueryVINVehicleItem
        {

            private string keyField;

            private string valueField;

            private string unitField;

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Key
            {
                get
                {
                    return this.keyField;
                }
                set
                {
                    this.keyField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Value
            {
                get
                {
                    return this.valueField;
                }
                set
                {
                    this.valueField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttributeAttribute()]
            public string Unit
            {
                get
                {
                    return this.unitField;
                }
                set
                {
                    this.unitField = value;
                }
            }
        }
public T DeserializeXML<T>(string xmlContent)
{
    XmlSerializer serializer = new XmlSerializer(typeof(T));
    MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlContent));
    return (T)serializer.Deserialize(memStream);
}

....
string resultXml = resp.GetResponseStream();
VINquery resultObject = DeserializeXML<VINquery>(resultObject);