• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. Parse a line in XML format

Stats

  • Replies 3
  • Subscribers 159
  • Views 13200
  • Members are here 0
More Content

Parse a line in XML format

joma
joma over 8 years ago

When I try to parse a line in a file in XML format I get an error:

E- *Error* parseString: argument #1 should be either a string or a symbol (type template = "SS") - ("global_min_aper")

The code I am using is:

axlExportXmlDBRecords("./temp_params.txt" nil)
    minWidth_port = infile("./temp_params.txt")
        when( minWidth_port
            while( param_line = gets(param_line minWidth_port)
                    if(rexMatchp("smooth_min_gap" param_line) then
                    println(list("Global aper raw value = " param_line ))
                global_min_aper = nth( 1 parseString(global_min_aper "<>"))
                    println(list("Global aper parsed value = " param_line ))
                        );if
                    );while
            );when
    close( minWidth_port )

This is basically a copy of the code which works for me on a typical report text file .
Can anyone point out what I am missing here?
Thanks.

  • Sign in to reply
  • Cancel
  • DavidJHutchins
    DavidJHutchins over 8 years ago

    below is what I think is the corrected version of your code:

            axlExportXmlDBRecords("./temp_params.txt" nil)
            minWidth_port = infile("./temp_params.txt")
            when( minWidth_port
                while( param_line = gets(param_line minWidth_port)
                    if(rexMatchp("smooth_min_gap" param_line) then
                        println(list("Global aper raw value = " param_line ))
                        (global_min_aper = nth( 2 parseString(param_line  "<>")))
                        println(list("Global aper parsed value = " global_min_aper ))
                    );if
                );while
            );when
            close( minWidth_port )

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • joma
    joma over 8 years ago

    Thanks David, it seems that an extra pair of brackets is the solution here to stop the error message.
    I have not seen this before. Could you explain in which cases it is neccessary to do this or why?
    For example in the same program I have the code:

    minWidth_port = infile("./eld_rep.rpt")
                when( minWidth_port
                    while( eld_line=gets(eld_line minWidth_port)
                        if(i<5
                        then
                        i++
                            else
                                lineList = parseString(eld_line ",")

    which gives no error and I have others that use nth in conjuction with parseString that work ok.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • DavidJHutchins
    DavidJHutchins over 8 years ago

    I think the error was caused by parsing the variable 'global_min_aper' which has no value,

    I changed the code to parse the 'param_line' variable containing the string from the open file

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information