Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Problem with Read and Write XML File
QtWS25 Last Chance

Problem with Read and Write XML File

Scheduled Pinned Locked Moved Solved General and Desktop
xmlxml parsingqt 5.5
10 Posts 3 Posters 3.8k Views
  • 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.
  • PunitP Offline
    PunitP Offline
    Punit
    wrote on last edited by Punit
    #1

    @Lifetime-Qt-Champion @Moderators
    Hello,

    I want to read an xml file and write some values.
    Example:

    <Entry Name="Browser.Dir.Triffort" Type="6" Value="Macintosh:Users:macwaves:Desktop:Jason:;Macintosh:Users:macwaves:Desktop:Max:;Macintosh:Users:macwaves:Desktop:Lucy:"></Entry>
    

    I just want to check if Xml file contains "Entry Name="Browser.Dir.Triffort" Type="6" and if it contains I want to replace the value.

    Just Like: if match found, then

    Value="Macintosh:Users:macwaves:Desktop:Jason:;Macintosh:Users:macwaves:Desktop:Max:;Macintosh:Users:macwaves:Desktop:Lucy:"></Entry>

    TO

    Value=Macintosh:Users:macwaves:XYZ:;"></Entry>

    Any Suggestions? I am using QXmlStreamReader.

    Thanks

    the_T 1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #2

      What exactly is your problem?

      1 Reply Last reply
      0
      • PunitP Punit

        @Lifetime-Qt-Champion @Moderators
        Hello,

        I want to read an xml file and write some values.
        Example:

        <Entry Name="Browser.Dir.Triffort" Type="6" Value="Macintosh:Users:macwaves:Desktop:Jason:;Macintosh:Users:macwaves:Desktop:Max:;Macintosh:Users:macwaves:Desktop:Lucy:"></Entry>
        

        I just want to check if Xml file contains "Entry Name="Browser.Dir.Triffort" Type="6" and if it contains I want to replace the value.

        Just Like: if match found, then

        Value="Macintosh:Users:macwaves:Desktop:Jason:;Macintosh:Users:macwaves:Desktop:Max:;Macintosh:Users:macwaves:Desktop:Lucy:"></Entry>

        TO

        Value=Macintosh:Users:macwaves:XYZ:;"></Entry>

        Any Suggestions? I am using QXmlStreamReader.

        Thanks

        the_T Offline
        the_T Offline
        the_
        wrote on last edited by
        #3

        @Punit said:

        @Lifetime-Qt-Champion @Moderators
        Why only to these? ;)

        Example:

        <Entry Name="Browser.Dir.Triffort" Type="6" Value="Macintosh:Users:macwaves:Desktop:Jason:;Macintosh:Users:macwaves:Desktop:Max:;Macintosh:Users:macwaves:Desktop:Lucy:"></Entry>
        

        Is this the only content of your XML file? If yes, then it is not valid XML.

        -- No support in PM --

        1 Reply Last reply
        0
        • PunitP Offline
          PunitP Offline
          Punit
          wrote on last edited by
          #4

          @Wieland

          I have a xml file which looks like this:

          <Entry Name="Browser.Dir.Recordings" Type="3" Value="Macintosh:Users:macwaves:Music:My:Recordings:"></Entry>
          
          <Entry Name="Browser.Dir.Root" Type="3" Value="Macintosh:Users:macwaves:Documents:xml 2.10.2:"></Entry>
          
          <Entry Name="Browser.ID3Mode" Type="1" Value="2"></Entry>
          
          <Entry Name="Browser.ImportMusicFolderAtStartup" Type="0" Value="1"></Entry>
          
          <Entry Name="Browser.KeyNotation.Displayed" Type="1" Value="2"></Entry>
          
          

          So the file contains many elements, attributes and values. Now I want to check that if "Entry" element has a value "Browser.Dir.Root" and "Type" element is equals to "3". Like this:

          <Entry Name="Browser.Dir.Root" Type="3" Value="Macintosh:Users:macwaves:Documents:xml 2.10.2:"></Entry>

          Now if match found, I want to change the text in "Value" element. Like this:

          <Entry Name="Browser.Dir.Root" Type="3" Value="Macintosh:Users:macwaves:Documents:xml 2.10.2:"></Entry>

          In the above example, <Entry Name="Browser.Dir.Root" and Type="3".... So match found. Now I want to change text for "Value" like this.

          <Entry Name="Browser.Dir.Root" Type="3" Value="Macintosh:Users:Hello"></Entry>

          So :

          Before:
          <Entry Name="Browser.Dir.Root" Type="3" Value="Macintosh:Users:macwaves:Documents:xml 2.10.2:"></Entry>

          After:
          <Entry Name="Browser.Dir.Root" Type="3" Value="Macintosh:Users:Hello"></Entry>

          How can I achieve this? I don't know much about Xml. Hope you can understand my problem.

          Thanks.

          1 Reply Last reply
          0
          • PunitP Offline
            PunitP Offline
            Punit
            wrote on last edited by
            #5

            @the_

            No, I was just showing an element.

            My file looks like this....

            <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
            <NIXML><Settings><Entry Name="Audio.DeviceName" Type="3" Value=""></Entry>
            <Entry Name="Audio.DeviceName.BuiltIn.Win" Type="3" Value=""></Entry>
            <Entry Name="Audio.DeviceName.Mac" Type="3" Value="Built-in"></Entry>
            <Entry Name="Audio.DeviceName.Win" Type="3" Value=""></Entry>
            <Entry Name="Audio.DriverName" Type="3" Value=""></Entry>
            <Entry Name="Audio.FS.Latency" Type="1" Value="512"></Entry>
            <Entry Name="Audio.FS.SampleRate" Type="1" Value="44100"></Entry>
            <Entry Name="Audio.FX.Selection" Type="5" Value="13;19;1;2;3;17;14;29;7;8;9;10;11;12;4;5;6;15;16;18;28;25;24;26;27;31;32;33;34;35;36;37;42;58;59;74;76;87;56;89;84;62;85"></Entry>
            <Entry Name="Audio.Latency" Type="1" Value="512"></Entry>
            <Entry Name="Audio.Mode" Type="1" Value="0"></Entry>
            <Entry Name="Audio.SampleRate" Type="1" Value="44100"></Entry>
            <Entry Name="AudioSettings.InactiveDevices" Type="7" Value="AudioDeviceSettingStart;1.01;Built-in;0;1;44100;512;0;6;12;14;0;1;-1;-1;-1;-1;0;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;0;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;AudioDeviceSettingEnd"></Entry>
            <Entry Name="BackgroundThread.AutoAnalyze" Type="0" Value="0"></Entry>
            <Entry Name="BackgroundThread.AutoAnalyzeOnLoad" Type="0" Value="0"></Entry>
            <Entry Name="BackgroundThread.DetermineTime" Type="0" Value="0"></Entry>
            <Entry Name="Broadcast.IcecastMetadata.Genre" Type="3" Value="Mixed Styles"></Entry>
            <Entry Name="Broadcast.IcecastMetadata.URL" Type="3" Value=""></Entry>
            <Entry Name="Broadcast.IcecastServer.Address" Type="3" Value=""></Entry>

            ;
            ;
            ;
            ;

            the_T 1 Reply Last reply
            0
            • PunitP Punit

              @the_

              No, I was just showing an element.

              My file looks like this....

              <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
              <NIXML><Settings><Entry Name="Audio.DeviceName" Type="3" Value=""></Entry>
              <Entry Name="Audio.DeviceName.BuiltIn.Win" Type="3" Value=""></Entry>
              <Entry Name="Audio.DeviceName.Mac" Type="3" Value="Built-in"></Entry>
              <Entry Name="Audio.DeviceName.Win" Type="3" Value=""></Entry>
              <Entry Name="Audio.DriverName" Type="3" Value=""></Entry>
              <Entry Name="Audio.FS.Latency" Type="1" Value="512"></Entry>
              <Entry Name="Audio.FS.SampleRate" Type="1" Value="44100"></Entry>
              <Entry Name="Audio.FX.Selection" Type="5" Value="13;19;1;2;3;17;14;29;7;8;9;10;11;12;4;5;6;15;16;18;28;25;24;26;27;31;32;33;34;35;36;37;42;58;59;74;76;87;56;89;84;62;85"></Entry>
              <Entry Name="Audio.Latency" Type="1" Value="512"></Entry>
              <Entry Name="Audio.Mode" Type="1" Value="0"></Entry>
              <Entry Name="Audio.SampleRate" Type="1" Value="44100"></Entry>
              <Entry Name="AudioSettings.InactiveDevices" Type="7" Value="AudioDeviceSettingStart;1.01;Built-in;0;1;44100;512;0;6;12;14;0;1;-1;-1;-1;-1;0;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;0;1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;AudioDeviceSettingEnd"></Entry>
              <Entry Name="BackgroundThread.AutoAnalyze" Type="0" Value="0"></Entry>
              <Entry Name="BackgroundThread.AutoAnalyzeOnLoad" Type="0" Value="0"></Entry>
              <Entry Name="BackgroundThread.DetermineTime" Type="0" Value="0"></Entry>
              <Entry Name="Broadcast.IcecastMetadata.Genre" Type="3" Value="Mixed Styles"></Entry>
              <Entry Name="Broadcast.IcecastMetadata.URL" Type="3" Value=""></Entry>
              <Entry Name="Broadcast.IcecastServer.Address" Type="3" Value=""></Entry>

              ;
              ;
              ;
              ;

              the_T Offline
              the_T Offline
              the_
              wrote on last edited by
              #6

              @Punit

              You may have a look at QDomDocument.

              -- No support in PM --

              ? 1 Reply Last reply
              3
              • PunitP Offline
                PunitP Offline
                Punit
                wrote on last edited by
                #7

                @the_

                Problem is solved. Thanks a lot for your suggestion. :)

                1 Reply Last reply
                0
                • the_T the_

                  @Punit

                  You may have a look at QDomDocument.

                  ? Offline
                  ? Offline
                  A Former User
                  wrote on last edited by
                  #8

                  @the_ I was just about to yell at you for recommending QDomDocument (Qt Xml module) as it is deprecated. Turns out, it's no longer deprecated anymore (see QTBUG-32926). :-)

                  the_T 1 Reply Last reply
                  2
                  • ? A Former User

                    @the_ I was just about to yell at you for recommending QDomDocument (Qt Xml module) as it is deprecated. Turns out, it's no longer deprecated anymore (see QTBUG-32926). :-)

                    the_T Offline
                    the_T Offline
                    the_
                    wrote on last edited by
                    #9

                    @Wieland
                    I did not notice that it has been depecated in any older Qt Version as I used QXmlStream{Reader,Writer} the one and only time I had to play with XML (I for myself do not like this format...) :)

                    -- No support in PM --

                    ? 1 Reply Last reply
                    2
                    • the_T the_

                      @Wieland
                      I did not notice that it has been depecated in any older Qt Version as I used QXmlStream{Reader,Writer} the one and only time I had to play with XML (I for myself do not like this format...) :)

                      ? Offline
                      ? Offline
                      A Former User
                      wrote on last edited by
                      #10

                      @the_ said:

                      I for myself do not like this format...

                      No-one does ^_^

                      1 Reply Last reply
                      2

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved