cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Learn how to build custom Python data connectors and further customize JMP’s Data Connector Framework with the Python Data Connector Demo, available now in the JMP Marketplace!
  • See how to create experiments to support product design and ID useful product features. Register for June 12 webinar, 2pm US Eastern Time.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
uday_guntupalli
Level VIII

Parse XML Help

All, 
   I have some XML, I would like to parse using JSL. I am not familiar with XML, so pardon my ignorance. 


   <Table><Rule DayName=\!"Sunday\!" Val1=\!"1\!"/>

 

   What I tried is the following: 

 

Parse XML( Test,
			On Element( "Table", Start Tag( New Table( XML Attr( "Table" ) ) ) ),
			On Element("Rule",End Tag( New Column( XML Attr( "DayName" ), Set Values( Parse( XML Text() ) ) ) ) )
		 );

  I know, I wold have to add one more rule using On Element to parse the "Val1" attribute, but that is not working, what I would like the output to be is : 

 

image.png

Best
Uday
1 ACCEPTED SOLUTION

Accepted Solutions
Craige_Hales
Super User

Re: Parse XML Help

test data

Test =
"\[
<Table>
    <Rule DayName="Sunday" Val1="1"/>
    <Rule DayName="Monday" Val1="2"/>
    <Rule DayName="Tuesday" Val1="3"/>
</Table>
]\";

You can get what you asked for like this:


Parse XML( Test,
    On Element( "Table", Start Tag( dt1 = New Table( XML Attr( "Table" ) ) ) ),
    On Element( "Rule", End Tag( New Column( XML Attr( "DayName" ), Set Values( Eval List( {XML Attr( "Val1" )} ) ) ) ) )
);

one wayone way

But I think a better intepretation of the file might look like this:

Parse XML( Test,
    On Element( "Table", Start Tag( dt2 = New Table( XML Attr( "Table" ), New Column( "DayName" ), New Column( "Val1" ) ) ) ),
    On Element(
        "Rule",
        End Tag(
            dt2 << addrow( 1 );
            dt2:DayName = XML Attr( "DayName" );
            dt2:Val1 = XML Attr( "Val1" );
        )
    )
);

Another wayAnother way

(You don't want the parse(...); the example in the scripting index that uses it also has a JSL matrix in the XML file that needs the parse. Your example has a single number, in quotation marks. You could use the num() function to make the conversion so the column would be numeric.   dt2:Val1 =num( XML Attr( "Val1" ));  )

Craige

View solution in original post

1 REPLY 1
Craige_Hales
Super User

Re: Parse XML Help

test data

Test =
"\[
<Table>
    <Rule DayName="Sunday" Val1="1"/>
    <Rule DayName="Monday" Val1="2"/>
    <Rule DayName="Tuesday" Val1="3"/>
</Table>
]\";

You can get what you asked for like this:


Parse XML( Test,
    On Element( "Table", Start Tag( dt1 = New Table( XML Attr( "Table" ) ) ) ),
    On Element( "Rule", End Tag( New Column( XML Attr( "DayName" ), Set Values( Eval List( {XML Attr( "Val1" )} ) ) ) ) )
);

one wayone way

But I think a better intepretation of the file might look like this:

Parse XML( Test,
    On Element( "Table", Start Tag( dt2 = New Table( XML Attr( "Table" ), New Column( "DayName" ), New Column( "Val1" ) ) ) ),
    On Element(
        "Rule",
        End Tag(
            dt2 << addrow( 1 );
            dt2:DayName = XML Attr( "DayName" );
            dt2:Val1 = XML Attr( "Val1" );
        )
    )
);

Another wayAnother way

(You don't want the parse(...); the example in the scripting index that uses it also has a JSL matrix in the XML file that needs the parse. Your example has a single number, in quotation marks. You could use the num() function to make the conversion so the column would be numeric.   dt2:Val1 =num( XML Attr( "Val1" ));  )

Craige

Recommended Articles