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
  1. Home
  2. General Programming
  3. C#
  4. add Xml in C#

add Xml in C#

Scheduled Pinned Locked Moved C#
questioncsharpxml
14 Posts 3 Posters 1 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.
  • B bertcox

    If I have a XML-document like this: Test 24 Test2 19 Test3 33 How can I add a street in "Paris"? Is it possible or is it to difficult? Thx in advance!

    R Offline
    R Offline
    rull
    wrote on last edited by
    #2

    Example from MSDN: using System; using System.IO; using System.Xml; public class Sample { public static void Main() { XmlDocument doc = new XmlDocument(); doc.LoadXml("" + "Pride And Prejudice" + ""); XmlNode root = doc.DocumentElement; //Create a new node. XmlElement elem = doc.CreateElement("price"); elem.InnerText="19.95"; //Add the node to the document. root.AppendChild(elem); Console.WriteLine("Display the modified XML..."); doc.Save(Console.Out); } }

    1 Reply Last reply
    0
    • B bertcox

      If I have a XML-document like this: Test 24 Test2 19 Test3 33 How can I add a street in "Paris"? Is it possible or is it to difficult? Thx in advance!

      P Offline
      P Offline
      Philip Fitzsimons
      wrote on last edited by
      #3

      you will need the System.Xml namespace and something like: string filename = "country.xml"; XmlDocument countryDocument = new XmlDocument(); countryDocument.Load(filename); XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name = 'Paris']"); XmlNode newStreetNode = countryDocument.CreateNode("Street"); XmlAttribute newStreetNameAttr = countryDocument.CreateAttribute("Name"); newStreetNameAttr.Value = "my new street"; newStreetNode.Attributes.Append(newStreetAttr); XmlNode newStreetNameNode = countryDocument.CreateNode("Name"); newStreetNameNode.InnerText = " Test 4 "; newStreetNode.AppendChild(newStreetNameNode); XmlNode newStreetAgeNode = countryDocument.CreateNode("Age"); newStreetAgeNode.InnerText = " 42 "; newStreetNode.AppendChild(newStreetAgeNode); parisNode.AppendChild(newStreetNode); countryDocument.Save(filename);


      "When the only tool you have is a hammer, a sore thumb you will have."

      B 1 Reply Last reply
      0
      • P Philip Fitzsimons

        you will need the System.Xml namespace and something like: string filename = "country.xml"; XmlDocument countryDocument = new XmlDocument(); countryDocument.Load(filename); XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name = 'Paris']"); XmlNode newStreetNode = countryDocument.CreateNode("Street"); XmlAttribute newStreetNameAttr = countryDocument.CreateAttribute("Name"); newStreetNameAttr.Value = "my new street"; newStreetNode.Attributes.Append(newStreetAttr); XmlNode newStreetNameNode = countryDocument.CreateNode("Name"); newStreetNameNode.InnerText = " Test 4 "; newStreetNode.AppendChild(newStreetNameNode); XmlNode newStreetAgeNode = countryDocument.CreateNode("Age"); newStreetAgeNode.InnerText = " 42 "; newStreetNode.AppendChild(newStreetAgeNode); parisNode.AppendChild(newStreetNode); countryDocument.Save(filename);


        "When the only tool you have is a hammer, a sore thumb you will have."

        B Offline
        B Offline
        bertcox
        wrote on last edited by
        #4

        Thx a lot! But their is still a mistake i can't find. XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name 'Paris']"); An unhandled exception of type 'System.Xml.XPath.XPathException' occurred in system.xml.dll Additional information: System error. Do you know what is wrong with the SelectSingleNode? Thx

        P 1 Reply Last reply
        0
        • B bertcox

          Thx a lot! But their is still a mistake i can't find. XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name 'Paris']"); An unhandled exception of type 'System.Xml.XPath.XPathException' occurred in system.xml.dll Additional information: System error. Do you know what is wrong with the SelectSingleNode? Thx

          P Offline
          P Offline
          Philip Fitzsimons
          wrote on last edited by
          #5

          opps typo by me. mised the equals out! XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name = 'Paris']");


          "When the only tool you have is a hammer, a sore thumb you will have."

          B 1 Reply Last reply
          0
          • P Philip Fitzsimons

            opps typo by me. mised the equals out! XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name = 'Paris']");


            "When the only tool you have is a hammer, a sore thumb you will have."

            B Offline
            B Offline
            bertcox
            wrote on last edited by
            #6

            Sorry to disturb you again but there is another mistake :-) He puts this line in yellow : parisNode.AppendChild(newStreetNode); An unhandled exception of type 'System.NullReferenceException' occurred in CountryAddEdit.exe Additional information: Object reference not set to an instance of an object. And is it possible to put Paris in a string so if i want to change another city i just have to change the string? Thx!

            P 1 Reply Last reply
            0
            • B bertcox

              Sorry to disturb you again but there is another mistake :-) He puts this line in yellow : parisNode.AppendChild(newStreetNode); An unhandled exception of type 'System.NullReferenceException' occurred in CountryAddEdit.exe Additional information: Object reference not set to an instance of an object. And is it possible to put Paris in a string so if i want to change another city i just have to change the string? Thx!

              P Offline
              P Offline
              Philip Fitzsimons
              wrote on last edited by
              #7

              this is because the SelectSingleNode is failing. might be either your code or the xml file - can you post them. the SelectSingleNode use a plain string, so you can use what ever you want for it...


              "When the only tool you have is a hammer, a sore thumb you will have."

              B 1 Reply Last reply
              0
              • P Philip Fitzsimons

                this is because the SelectSingleNode is failing. might be either your code or the xml file - can you post them. the SelectSingleNode use a plain string, so you can use what ever you want for it...


                "When the only tool you have is a hammer, a sore thumb you will have."

                B Offline
                B Offline
                bertcox
                wrote on last edited by
                #8

                string filename = @"c:\country.xml"; XmlDocument countryDocument = new XmlDocument(); countryDocument.Load(filename); XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name = 'Paris']"); XmlNode newStreetNode = countryDocument.CreateNode(XmlNodeType.Element,"Street",null); XmlAttribute newStreetNameAttr = countryDocument.CreateAttribute("Name"); newStreetNameAttr.Value = "my new street"; newStreetNode.Attributes.Append(newStreetNameAttr); XmlNode newStreetNameNode = countryDocument.CreateNode(XmlNodeType.Element,"Name",null); newStreetNameNode.InnerText = " Test 4 "; newStreetNode.AppendChild(newStreetNameNode); XmlNode newStreetAgeNode = countryDocument.CreateNode(XmlNodeType.Element,"Age",null); newStreetAgeNode.InnerText = " 42 "; newStreetNode.AppendChild(newStreetAgeNode); parisNode.AppendChild(newStreetNode); countryDocument.Save(filename); countryDocument.CreateNode(XmlNodeType.Element,"Name",null); I found this in the MSDN because there was a mistake there to but did i fill it wrong?

                P 1 Reply Last reply
                0
                • B bertcox

                  string filename = @"c:\country.xml"; XmlDocument countryDocument = new XmlDocument(); countryDocument.Load(filename); XmlNode parisNode = countryDocument.SelectSingleNode("/Country/City[@Name = 'Paris']"); XmlNode newStreetNode = countryDocument.CreateNode(XmlNodeType.Element,"Street",null); XmlAttribute newStreetNameAttr = countryDocument.CreateAttribute("Name"); newStreetNameAttr.Value = "my new street"; newStreetNode.Attributes.Append(newStreetNameAttr); XmlNode newStreetNameNode = countryDocument.CreateNode(XmlNodeType.Element,"Name",null); newStreetNameNode.InnerText = " Test 4 "; newStreetNode.AppendChild(newStreetNameNode); XmlNode newStreetAgeNode = countryDocument.CreateNode(XmlNodeType.Element,"Age",null); newStreetAgeNode.InnerText = " 42 "; newStreetNode.AppendChild(newStreetAgeNode); parisNode.AppendChild(newStreetNode); countryDocument.Save(filename); countryDocument.CreateNode(XmlNodeType.Element,"Name",null); I found this in the MSDN because there was a mistake there to but did i fill it wrong?

                  P Offline
                  P Offline
                  Philip Fitzsimons
                  wrote on last edited by
                  #9

                  I should have just used CreateElement :) however, you can use CreateNode, but you don't need the null as we don't need an xml namespace. I suspect the problem is your xml file, can you post that up.


                  "When the only tool you have is a hammer, a sore thumb you will have."

                  B 1 Reply Last reply
                  0
                  • P Philip Fitzsimons

                    I should have just used CreateElement :) however, you can use CreateNode, but you don't need the null as we don't need an xml namespace. I suspect the problem is your xml file, can you post that up.


                    "When the only tool you have is a hammer, a sore thumb you will have."

                    B Offline
                    B Offline
                    bertcox
                    wrote on last edited by
                    #10

                    This is the XML file (looks good in internet explorer) Test 24 Test2 19 Test3 33

                    P 1 Reply Last reply
                    0
                    • B bertcox

                      This is the XML file (looks good in internet explorer) Test 24 Test2 19 Test3 33

                      P Offline
                      P Offline
                      Philip Fitzsimons
                      wrote on last edited by
                      #11

                      yes, I thought so, you have changed the case of "city" in your xml... so either change the SelectNode to be SelectSingleNode("/Country/city[@Name = 'Paris']"); or fix you xml to be "City".. rememeber XML is case sensitive, so its best to pick on style and stick to it..


                      "When the only tool you have is a hammer, a sore thumb you will have."

                      B 1 Reply Last reply
                      0
                      • P Philip Fitzsimons

                        yes, I thought so, you have changed the case of "city" in your xml... so either change the SelectNode to be SelectSingleNode("/Country/city[@Name = 'Paris']"); or fix you xml to be "City".. rememeber XML is case sensitive, so its best to pick on style and stick to it..


                        "When the only tool you have is a hammer, a sore thumb you will have."

                        B Offline
                        B Offline
                        bertcox
                        wrote on last edited by
                        #12

                        well done :-) the other problem: XmlNode newStreetNode = countryDocument.CreateNode(XmlNodeType.Element,"Street",null); I changed it into XmlNode newStreetNode = countryDocument.CreateNode(XmlNodeType.Element,"Street",""); Now it works :-D Thx!

                        P 1 Reply Last reply
                        0
                        • B bertcox

                          well done :-) the other problem: XmlNode newStreetNode = countryDocument.CreateNode(XmlNodeType.Element,"Street",null); I changed it into XmlNode newStreetNode = countryDocument.CreateNode(XmlNodeType.Element,"Street",""); Now it works :-D Thx!

                          P Offline
                          P Offline
                          Philip Fitzsimons
                          wrote on last edited by
                          #13

                          or you can use the short version: XmlNode newStreetNode = countryDocument.CreateElement("Street");


                          "When the only tool you have is a hammer, a sore thumb you will have."

                          B 1 Reply Last reply
                          0
                          • P Philip Fitzsimons

                            or you can use the short version: XmlNode newStreetNode = countryDocument.CreateElement("Street");


                            "When the only tool you have is a hammer, a sore thumb you will have."

                            B Offline
                            B Offline
                            bertcox
                            wrote on last edited by
                            #14

                            off course :-D thx again

                            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