Parse XML to database

Discussion in 'Ruby' started by Cean Ooi, Jun 2, 2008.

  1. Cean Ooi

    Cean Ooi Guest

    hi, can someone help me with this
    after i read theres nothing show in my database.... wat happen...?
    where is my error in my code??

    class Map

    require 'rexml/document'
    require "mysql"
    require "dbi"
    include REXML
    scanfile = File.new('River_Va.lmx')
    doc = doc = File.open('River_Va.lmx', 'rb') {|scanfile|
    Document.new(scanfile)
    }
    puts doc

    maps = REXML::Document.new()
    root = maps.root

    names = []
    latitudes = []
    longtitudes = []


    #~ MSISDN = {}
    #~ mobils.elements.each("MobileDevices/MobileDevice") { |element|
    puts
    #~ element.attributes["MSISDN"]
    #~ MSISDN = element.attributes["MSISDN"] }

    #~ datetime = {}
    #~ mobils.elements.each("MobileDevices/MobileDevice") { |element|
    puts
    #~ element.attributes["datetime"]
    #~ datetime = element.attributes["datetime"] }

    #~ description = {}
    #~ mobils.elements.each("MobileDevices/MobileDevice") { |element|
    puts
    #~ element.attributes["description"]
    #~ description = element.attributes["description"] }


    maps.elements.each("lm:landmark") { |element| puts
    element.attributes["name"]
    names.push element.attributes["name"]
    name = element.attributes["name"]}

    puts name
    maps.elements.each("lm:landmark") { |element| puts
    element.attributes["latitude"]
    latitudes.push element.attributes["latitude"]}

    puts latitudes
    maps.elements.each("lm:longitude") { |element| puts
    element.attributes["longtitude"]
    longtitudes.push element.attributes["longtitude"] }

    puts longtitudes



    # db insert
    dbname="email_development"

    m = Mysql.new("localhost", "root", "", "email_development")
    sth=m.query("insert into maps (name,latitude,longtitude) values
    (name,latitude,longtitude)")
    #~ ("INSERT INTO Maps (name, latitude,
    #~ longtitude)
    #~ VALUES (?,?,?,?,?)")
    #~ models.each_index do |index|
    #~name = names[index]
    #~ latitude = latitudes[index]
    #~ longtitude = longtitudes[index]
    # sth.execute("River_Va.lmx", "email_development", "#{names}",
    #"#{latitudes}", "#{longtitudes}")
    #end

    end



    this is my xml file~~

    <?xml version="1.0" encoding="UTF-8"?>
    <lm:lmx xmlns:lm="http://www.nokia.com/schemas/location/landmarks/1/0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.nokia.com/schemas/location/landmarks/1/0
    lmx.xsd">
    <lm:landmarkCollection>
    <lm:landmark>
    <lm:name>River Valley High School</lm:name>
    <lm:coordinates>
    <lm:latitude>9.36</lm:latitude>
    <lm:longitude>147.804</lm:longitude>
    </lm:coordinates>
    <lm:addressInfo>
    <lm:country>Singapore</lm:country>
    <lm:city>Singapore</lm:city>
    <lm:postalCode>10</lm:postalCode>
    <lm:district>Bukit Merah</lm:district>
    <lm:street>Malan Road</lm:street>
    <lm:phoneNumber>+65987987987</lm:phoneNumber>
    </lm:addressInfo>
    </lm:landmark>
    </lm:landmarkCollection>
    </lm:lmx>
    --
    Posted via http://www.ruby-forum.com/.
     
    Cean Ooi, Jun 2, 2008
    #1
    1. Advertising

  2. On 02.06.2008 04:06, Cean Ooi wrote:
    > hi, can someone help me with this
    > after i read theres nothing show in my database.... wat happen...?
    > where is my error in my code??


    I don't see any COMMIT in there.

    robert
     
    Robert Klemme, Jun 2, 2008
    #2
    1. Advertising

  3. Cean Ooi

    Cean Ooi Guest

    hmm....i solved the database problem.. but... after i extract the xml
    file, it shows me nil

    which part that i did wrong?



    require 'rexml/document'
    require "mysql"
    require "dbi"
    include REXML
    scanfile = File.new('River_Va.lmx')

    dbname="email_development"
    doc = REXML::Document.new scanfile

    string = <<EOF
    <mydoc>
    <someelement attribute="nanoo">Text, text, text</someelement>
    </mydoc>
    EOF
    doc = Document.new string



    doc = Document.new File.new("River_Va.lmx")

    doc.elements.each("lm:landmarkCollection/lm:landmark") { |element|
    puts element.attributes["lm:name"] }
    root = doc.root

    popo = root.attributes["lm:name"]
    puts root.attributes["lm:name"]
    --
    Posted via http://www.ruby-forum.com/.
     
    Cean Ooi, Jun 2, 2008
    #3
  4. Cean Ooi

    Cean Ooi Guest

    Cean Ooi, Jun 2, 2008
    #4
  5. Cean Ooi

    Cean Ooi Guest

    well.... i found it how.. but then, can anyone help me how to remove
    this thing inside the database please???

    <try>123</try>

    cause my attribute for my try in the database is integer, and it cant
    read the try, so how shud i remove that thing before the database??

    really appreciate if someone would help me with this...

    cheers
    --
    Posted via http://www.ruby-forum.com/.
     
    Cean Ooi, Jun 2, 2008
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. neil
    Replies:
    0
    Views:
    585
  2. Replies:
    1
    Views:
    747
    Esmond Pitt
    Mar 27, 2005
  3. Replies:
    19
    Views:
    1,135
    Daniel Vallstrom
    Mar 15, 2005
  4. Replies:
    1
    Views:
    187
  5. 7stud --

    optparse: parse v. parse! ??

    7stud --, Feb 20, 2008, in forum: Ruby
    Replies:
    3
    Views:
    189
    7stud --
    Feb 20, 2008
Loading...

Share This Page