Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
CODE PROJECT For Those Who Code
  • Home
  • Articles
  • FAQ
Community
  1. Home
  2. General Programming
  3. C#
  4. Reading an XML file

Reading an XML file

Scheduled Pinned Locked Moved C#
questionxml
12 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Y yonidebest

    I looked all over the web for an easy way to read an XML file, with no success. Most places I found used the XmlTextReader.Read() method, which I don't find easy to use if I dont wanna go thru the whole file. This is what I am looking for. Say I have the following XML file: 10,000,000 1.2 7,000,000 2.4 and I would like to access Miami's population element (and get the 7,000,000 string) something like this (I have invent the names of the methods - the final question follows these exampls): string PopulationOfMiami = xmlfile["Miami"].population; or perhaps: string PopulationOfMiami = xmlfile["Miami"].population.value; or perhaps: string PopulationOfMiami = xmlfile["Miami"].ElementSon("population").value; or perhaps: string PopulationOfMiami = xmlfile.findNameAttribute("Miami").population.value; I want access to my XML file in a similar form in one of the above fashioned-way. Does anyone know of real methods and class that work like above? I hope I explained myself OK :doh:. Thanks, Yoni

    K Offline
    K Offline
    Kent Sharkey
    wrote on last edited by
    #3

    It looks like you should actually be using XmlDocument, rather than XmlTextReader. That will let you access your data similar to what you're looking for. XmlDocument doc = new XmlDocument(); doc.LoadXml(yourXML); String PopOfMiami = doc.SelectSingleNode("/cities/city[@name='Miami']/population").InnerText; Alternately, you can create an XML serializer, which would give you syntax closer to what you're looking for.

    -------------- TTFN - Kent

    Y 1 Reply Last reply
    0
    • Y yonidebest

      I looked all over the web for an easy way to read an XML file, with no success. Most places I found used the XmlTextReader.Read() method, which I don't find easy to use if I dont wanna go thru the whole file. This is what I am looking for. Say I have the following XML file: 10,000,000 1.2 7,000,000 2.4 and I would like to access Miami's population element (and get the 7,000,000 string) something like this (I have invent the names of the methods - the final question follows these exampls): string PopulationOfMiami = xmlfile["Miami"].population; or perhaps: string PopulationOfMiami = xmlfile["Miami"].population.value; or perhaps: string PopulationOfMiami = xmlfile["Miami"].ElementSon("population").value; or perhaps: string PopulationOfMiami = xmlfile.findNameAttribute("Miami").population.value; I want access to my XML file in a similar form in one of the above fashioned-way. Does anyone know of real methods and class that work like above? I hope I explained myself OK :doh:. Thanks, Yoni

      M Offline
      M Offline
      meeram395
      wrote on last edited by
      #4

      Hi, There is another way which you can read the values of XML file. Given below the code. 1. In the XML file, add the lines as below: CityNY name="New York" population=10,000,000 growth=1.2 CityMi name="Miami" population=7,000,000 growth=2.4 2. Open a new class called ReadXMLConfig 3. use the namespace, using System.Xml; 4. Declare the data members as follows : public class ReadXMLConfig { XMLDocument xmlDoc; private string NYName; private string NYpop; private string NYgrowth; private string MiName; private string Mipop; private string Migrowth; } 5. Type the following in the constructor area: xmlDoc=new XmlDocument // in the constructor NYName = null; NYpop = null; NYgrowth = null; MiName=null; Mipop=null; migrowth=null; 6. Create a function called LoadXML and type as follows: public void LoadXML() { xmlDoc.Load("XMLFilename"); XmlNodeList elemList; XmlElement elem; elemList = xmlDoc.GetElementsByTagName("CityNY"); elem = (XmlElement)elemList[0]; NYName = elem.GetAttribute("name"); NYpop = elem.GetAttribute("population"); NYgrowth = elem.GetAttribte("growth"); elemList = xmlDoc.GetElementsByTagName("CityMi"); elem = (XmlElement)elemList[0]; MiName = elem.GetAttribute("name"); Mipop = elem.GetAttribute("population"); Migrowth = elem.GetAttribte("growth"); } Call this load function wherever you want. Hope this will helps. Cheers -- modified at 4:24 Tuesday 12th December, 2006

      Meeram395

      Y 1 Reply Last reply
      0
      • K Kent Sharkey

        It looks like you should actually be using XmlDocument, rather than XmlTextReader. That will let you access your data similar to what you're looking for. XmlDocument doc = new XmlDocument(); doc.LoadXml(yourXML); String PopOfMiami = doc.SelectSingleNode("/cities/city[@name='Miami']/population").InnerText; Alternately, you can create an XML serializer, which would give you syntax closer to what you're looking for.

        -------------- TTFN - Kent

        Y Offline
        Y Offline
        yonidebest
        wrote on last edited by
        #5

        Thanks - this looks like what I was looking for. Problem is that I have a problem: My XML is a file, not a string variable. i.e. this doesn't work: XmlDocument doc = new XmlDocument(); doc.LoadXml(@"c:\myfile.xml"); String PopOfMiami = doc.SelectSingleNode("/cities/city[@name='Miami']/population").InnerText; I looked around for a way around this, trying to give LoadXml a XmlReader and XmlTextReader, but nothing. How can I load my XML file and then do the select? Thanks, Yoni

        K 1 Reply Last reply
        0
        • M meeram395

          Hi, There is another way which you can read the values of XML file. Given below the code. 1. In the XML file, add the lines as below: CityNY name="New York" population=10,000,000 growth=1.2 CityMi name="Miami" population=7,000,000 growth=2.4 2. Open a new class called ReadXMLConfig 3. use the namespace, using System.Xml; 4. Declare the data members as follows : public class ReadXMLConfig { XMLDocument xmlDoc; private string NYName; private string NYpop; private string NYgrowth; private string MiName; private string Mipop; private string Migrowth; } 5. Type the following in the constructor area: xmlDoc=new XmlDocument // in the constructor NYName = null; NYpop = null; NYgrowth = null; MiName=null; Mipop=null; migrowth=null; 6. Create a function called LoadXML and type as follows: public void LoadXML() { xmlDoc.Load("XMLFilename"); XmlNodeList elemList; XmlElement elem; elemList = xmlDoc.GetElementsByTagName("CityNY"); elem = (XmlElement)elemList[0]; NYName = elem.GetAttribute("name"); NYpop = elem.GetAttribute("population"); NYgrowth = elem.GetAttribte("growth"); elemList = xmlDoc.GetElementsByTagName("CityMi"); elem = (XmlElement)elemList[0]; MiName = elem.GetAttribute("name"); Mipop = elem.GetAttribute("population"); Migrowth = elem.GetAttribte("growth"); } Call this load function wherever you want. Hope this will helps. Cheers -- modified at 4:24 Tuesday 12th December, 2006

          Meeram395

          Y Offline
          Y Offline
          yonidebest
          wrote on last edited by
          #6

          Thanks, but I can't change the XML so easily - I found a VB code on the net that converts an excel file to an xml file. It isn't flexible. the city tags represent a row in an excel. can't rename them. Thanks anyway, I might use this in the future. Yoni

          1 Reply Last reply
          0
          • Y yonidebest

            Thanks - this looks like what I was looking for. Problem is that I have a problem: My XML is a file, not a string variable. i.e. this doesn't work: XmlDocument doc = new XmlDocument(); doc.LoadXml(@"c:\myfile.xml"); String PopOfMiami = doc.SelectSingleNode("/cities/city[@name='Miami']/population").InnerText; I looked around for a way around this, trying to give LoadXml a XmlReader and XmlTextReader, but nothing. How can I load my XML file and then do the select? Thanks, Yoni

            K Offline
            K Offline
            Kent Sharkey
            wrote on last edited by
            #7

            If the XML is in a file use doc.Load(path) instead.

            -------------- TTFN - Kent

            Y 1 Reply Last reply
            0
            • K Kent Sharkey

              If the XML is in a file use doc.Load(path) instead.

              -------------- TTFN - Kent

              Y Offline
              Y Offline
              yonidebest
              wrote on last edited by
              #8

              Thanks. New problem :-) I get a "XmlException: '?' is an unexpected token. Expecting white space" exception. doh. Any ideas? Thanks again, Yoni

              K 1 Reply Last reply
              0
              • Y yonidebest

                Thanks. New problem :-) I get a "XmlException: '?' is an unexpected token. Expecting white space" exception. doh. Any ideas? Thanks again, Yoni

                K Offline
                K Offline
                Kent Sharkey
                wrote on last edited by
                #9

                What does your XML look like? -- modified at 14:52 Tuesday 12th December, 2006 As in, it's not just the six lines above, is it?

                -------------- TTFN - Kent

                Y 1 Reply Last reply
                0
                • K Kent Sharkey

                  What does your XML look like? -- modified at 14:52 Tuesday 12th December, 2006 As in, it's not just the six lines above, is it?

                  -------------- TTFN - Kent

                  Y Offline
                  Y Offline
                  yonidebest
                  wrote on last edited by
                  #10

                  No, it isn't just six lines. It's similar tho - many more cities and many more elements. Now that you mention it - it has a first line: Could it be this? -- modified at 21:29 Tuesday 12th December, 2006

                  K 1 Reply Last reply
                  0
                  • Y yonidebest

                    No, it isn't just six lines. It's similar tho - many more cities and many more elements. Now that you mention it - it has a first line: Could it be this? -- modified at 21:29 Tuesday 12th December, 2006

                    K Offline
                    K Offline
                    Kent Sharkey
                    wrote on last edited by
                    #11

                    No, that's a fairly standard XML declaration. However, I'm guessing there's some high-ASCII character somewhere in that document, or something sitting in the wrong place. Does the error message come with a position (something along the lines of "The expected token is 'whitespace'. Line 1, position 40. )

                    -------------- TTFN - Kent

                    Y 1 Reply Last reply
                    0
                    • K Kent Sharkey

                      No, that's a fairly standard XML declaration. However, I'm guessing there's some high-ASCII character somewhere in that document, or something sitting in the wrong place. Does the error message come with a position (something along the lines of "The expected token is 'whitespace'. Line 1, position 40. )

                      -------------- TTFN - Kent

                      Y Offline
                      Y Offline
                      yonidebest
                      wrote on last edited by
                      #12

                      ahhh Thanks! Indeed - it did have a position - I looked it up in the XML and found a name with a quote in it :-) I'll escape it. Many thanks, Yoni

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups