XML相关

读取Xml文件

  这里的xml地址可能有问题,不太懂,我用的绝对地址。这里的xml里有&符号会报错(“An error occurred while parsing EntityName”)。

XmlDocument xmldoc = new XmlDocument();
FileStream fs = new FileStream(@"..\XMLFile2.xml", FileMode.Open, FileAccess.Read);
xmldoc.Load(fs);
return xmldoc;

Xml反序列化成对象

要反序列化的xml,这里要得到Recommendations 

<GetCategorySpecificsResponse xmlns="urn:ebay:apis:eBLBaseComponents">
  <Timestamp>2011-06-27T07:56:30.174Z</Timestamp>
  <Ack>Success</Ack>
  <Version>725</Version>
  <Build>E725_CORE_BUNDLED_13381130_R1</Build>
  <Recommendations>
    <CategoryID>53159</CategoryID>
    <NameRecommendation>
      <Name>Style</Name>
      <ValidationRules>
        <MinValues>1</MinValues>
        <MaxValues>1</MaxValues>
        <SelectionMode>SelectionOnly</SelectionMode>
        <VariationSpecifics>Disabled</VariationSpecifics>
      </ValidationRules>
      <ValueRecommendation>
        <Value>Blouse</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Button Down Shirt</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Halter</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Knit Top</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Polo Shirt</Value>
      </ValueRecommendation>
    </NameRecommendation>
    <NameRecommendation>
      <Name>Sleeve Style</Name>
      <ValidationRules>
        <MaxValues>1</MaxValues>
        <SelectionMode>FreeText</SelectionMode>
      </ValidationRules>
      <ValueRecommendation>
        <Value>3/4 Sleeve</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Cap Sleeve</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Sleeveless</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Spaghetti Strap</Value>
      </ValueRecommendation>
      <ValueRecommendation>
        <Value>Strapless</Value>
      </ValueRecommendation>
    </NameRecommendation>
  </Recommendations>
</GetCategorySpecificsResponse>

构建Recommendations对象  

[XmlRoot(Namespace = "urn:ebay:apis:eBLBaseComponents")]
    public class Recommendations
    {
        public int CategoryID { get; set; }

        [XmlElement]
        public List<NameRecommendation> NameRecommendation { get; set; }
    }  
public class NameRecommendation
    {
        public string  Name { get; set; }

        public ValidationRules ValidationRules { get; set; }

        [XmlElement]
        public List<ValueRecommendation> ValueRecommendation { get; set; }
    }
public class ValidationRules
    {
        public string ValueType { get; set; }

        public int MinValues { get; set; }

        public int MaxValues { get; set; }

        public string SelectionMode { get; set; }

        public string VariationSpecifics { get; set; }
    }
public class ValueRecommendation
    {
        [XmlElement]
        public string  Value { get; set; }

        public ValidationRules ValidationRules { get; set; }
    }

反序列化代码  

public static T Deserialize<T>(XmlDocument response, string NodeName)
            {
                XmlNodeList NameRecommendationList = response.GetElementsByTagName(NodeName);

                string xml = NameRecommendationList[0].OuterXml;

                XmlSerializer serializer = new XmlSerializer(typeof(T));

                #region 将XML 转换成流
                byte[] byteData = null;
                byteData = Encoding.ASCII.GetBytes(xml);
                Stream stream = new MemoryStream(byteData);
                #endregion

                //将流转化为想要的对象
                T test = (T)serializer.Deserialize(stream);

                return test;
            }

 

posted @ 2013-11-14 15:40  小飞的DD  阅读(264)  评论(0编辑  收藏  举报