none
XML解析的問題? RRS feed

  • 問題

  • 各位好~

    最近在Parse XML時遇到一個問題

    我都用XmlTextReader元件做的

    <SI>
      <LocalPath Comment="DIR">D:\</LocalPath>
      <ImagePath Comment="ImageDir">Image</IncomingPath>
    </SI>

    以往都是這樣的XML格式

    可是我突然遇到下面的格式

    XML Parse就會出錯

    <Response Name="reply">

    <Field Name="MessageID" Value="1200019804806"/>

    <Field Name="PacketType" Value="0300"/>

    <Field Name="ApplyType" Value="3200"/>

    </Response>

     

    請問各位這該如何處理

    謝謝~

    2008年9月4日 上午 05:21

解答

  • 可以解析阿...例如:


    var xd = XDocument.Load(Server.MapPath("XMLFile.xml"));


    var q = from x in xd.Descendants("Field")


            select new


                   {


                       Name = x.Attribute("Name").Value,


                       Value = x.Attribute("Value").Value


                   };


     


    foreach (var o in q)


    {


        Response.Write(o.Name + " " + o.Value + "<BR />");


    }



    2008年9月4日 上午 05:51
  • 上一篇回應是使用 C# 3.0 + LINQ To XML ,

    要使用 XmlDocuemnt ,請參考如下:


    XmlDocument xd = new XmlDocument();


    xd.Load(Server.MapPath("XMLFile.xml"));


    foreach (XmlNode xn in xd.GetElementsByTagName("Field"))


    {


        Response.Write(xn.Attributes["Name"].Value + " " + xn.Attributes["Value"].Value + "<BR />");


    }



    2008年9月4日 上午 06:33

所有回覆

  • XML標籤是區分字母大小寫的: <Response> 沒有 </Response> 相對的結尾

    2008年9月4日 上午 05:28
  •  

    抱歉~打的時候沒注意大小寫

    不過解析時還是錯誤的

    這種格式真的是XML格式嗎

    2008年9月4日 上午 05:33
  • 可以解析阿...例如:


    var xd = XDocument.Load(Server.MapPath("XMLFile.xml"));


    var q = from x in xd.Descendants("Field")


            select new


                   {


                       Name = x.Attribute("Name").Value,


                       Value = x.Attribute("Value").Value


                   };


     


    foreach (var o in q)


    {


        Response.Write(o.Name + " " + o.Value + "<BR />");


    }



    2008年9月4日 上午 05:51
  • 小弟笨笨的

    覺得這個語法好怪啊

    是不是要using System.Xml.Linq;

    小地接觸並不深入~

    查了一下XmlDocument 並無 Descendants這個Method

     

    2008年9月4日 上午 06:16
  • 上一篇回應是使用 C# 3.0 + LINQ To XML ,

    要使用 XmlDocuemnt ,請參考如下:


    XmlDocument xd = new XmlDocument();


    xd.Load(Server.MapPath("XMLFile.xml"));


    foreach (XmlNode xn in xd.GetElementsByTagName("Field"))


    {


        Response.Write(xn.Attributes["Name"].Value + " " + xn.Attributes["Value"].Value + "<BR />");


    }



    2008年9月4日 上午 06:33
  •  

    的確是可行的

    感謝你的幫助啊

    2008年9月4日 上午 06:45