Hi Sharon,

That worked ..Thanks .

Regards
Sangram

On Tue, Apr 7, 2009 at 10:10 PM, Sharon Lucas <luc...@us.ibm.com> wrote:

>
> Hi Sangram
>
> Using the Python string split function to split machine_name using a  comma
> worked fine for me.  For example,
>
>   <function name="Main">
>     <sequence>
>
>       <!-- Assign the file name of a STAX xml document you want to parse
> -->
>       <call function="'parseXML'">'c:/MyXml.xml'</call>
>
>       <script>
>         [name, machine_name] = STAXResult
>
>         machineList = machine_name.split(',')
>       </script>
>
>       <log message="1">'Name: %s' % (name)</log>
>       <log message="1">'machineList: %s' % (machineList)</log>
>
>     </sequence>
>   </function>
>
> You said you got an error, but you didn't provide the error.  You should
> always provide the exact error that you're getting when asking a question
> about why you are getting an error.
> There appeared to be a couple of non-visible characters at the end of your
> machine_name.split('.') line in the code you provided which possibly caused
> the error you were seeing.  Using the above function for me produced the
> following expected results via the STAX Job Monitor "Messages" panel:
>   20090407-11:32:48 Name: QuickSanity  20090407-11:32:48 Machine_name:
> 155.35.3.79,155.63.3.89,155.62.3.91
>  20090407-11:32:49 machineList: ['155.35.3.79', '155.63.3.89',
> '155.62.3.91']
>
> --------------------------------------------------------------
> Sharon Lucas
> IBM Austin,   luc...@us.ibm.com
> (512) 286-7313 or Tieline 363-7313
>
>
>
>   *Sangram Bakshi <san...@gmail.com>*
>
> 04/07/2009 05:32 AM
>    To
> Sharon Lucas/Austin/i...@ibmus  cc
>  staf-users@lists.sourceforge.net
>  Subject
> Re: [staf-users] Parsing a XML file in a stax job.
>
>
>
>
> Hi Sharon,
>
> Thanks for the inputs , actually i am using xml as i am trying to take
> inputs from a GUI , i take the input then write to the xml , then parse this
> xml to get the values into the stax job.
>
>
> Also i tried your inputs it parses and gets the value properly. Thanks.
>
>
> I tried to parse the string machine_name which is returned after parsing
> the xml file
> MyXml.xml .
>
> In <script>
>         [name, machine_name] = STAXResult
> </script>
>
>      array_machine = machine_name.split(',')
>
> and get them into array_machine[0] ..[1] [2] etc
> inorder to get the individual ip adresses , but i am getting error using
> this method of parsing .
> Is there any other method to do so .I know this is not  a STAX question ,
> but it will save me time if i get some pointers.
>
> Regards
> Sangram
> On Mon, Apr 6, 2009 at 11:22 PM, Sharon Lucas 
> <*luc...@us.ibm.com*<luc...@us.ibm.com>>
> wrote:
>
> Note that this is not really a STAF or STAX question.  This is simply a
> question of how in Jython can I use a parse an xml file to get the values
> for the text nodes for elements "name" and "machine_name".
>
> Also, why are you using an xml file when instead you could simply use a
> file that contains Python code to set the values for variables name and
> machine_name?  For example, you could simply create a file,
> C:\myScriptFile.py, that contains:
>
> name = 'QuickSanity'
> machine_name = '155.35.3.79,155.63.3.89,155.62.3.91'
>
> And then specify the name of this file as the value for the SCRIPTFILE
> option on your STAX EXECUTE request (or similarly via the STAX Monitor).
>  For example:
>
> STAF staxMachine STAX EXECUTE FILE "C:/yourStaxJob.xml'  SCRIPTFILE
> "C:/myScriptFile.py"
>
> Then you would be able to reference Python variables name and machine_name
> from within your STAX job with no xml parsing required.
>
> But, in case you have a good reason for the data only being available in an
> xml file, here's an example of a STAX job that parses your xml file and gets
> the values for the "name" and "machine_name" elemenst in the xml file.
>
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <!DOCTYPE stax SYSTEM "stax.dtd">
> <stax>
>   <defaultcall function="Main"/>
>
>   <function name="Main">
>     <sequence>
>
>       <!-- Assign the file name of a STAX xml document you want to parse
> -->
>       <call function="'parseXML'">'c:/MyXml.xml'</call>
>
>       <script>
>         [name, machine_name] = STAXResult
>       </script>
>
>       <log message="1">'Name: %s' % (name)</log>
>       <log message="1">'Machine_name: %s' % (machine_name)</log>
>
>     </sequence>
>   </function>
>
>   <!-- *******************************************************************
> -->
>   <!-- Following function is used to parse an XML file and get the text
>  -->
>   <!-- values for the name and machine_name elements
> -->
>   <!-- *******************************************************************
> -->
>   <function name="parseXML" scope="local">
>
>     <function-list-args>
>       <function-required-arg name="xmlFileName">
>         Name of file containing XML to be parsed
>       </function-required-arg>
>     </function-list-args>
>
>     <sequence>
>
>       <!-- Parse the XML -->
>       <script>
>         factory = DocumentBuilderFactory.newInstance();
>         factory.setValidating(1)
>         factory.setIgnoringElementContentWhitespace(0)
>         builder  = factory.newDocumentBuilder()
>         document = builder.parse(xmlFileName)
>       </script>
>
>       <script>
>         name = None
>         machine_name = None
>
>         # Get the text value for the element with tag name "name"
>
>         nodeList = document.getElementsByTagName("name")
>
>         for i in range(nodeList.getLength()):
>           node = nodeList.item(i);
>
>           if node.getNodeType() == Node.ELEMENT_NODE:
>             children = node.getChildNodes()
>
>             for j in range(children.getLength()):
>               thisChild = children.item(j)
>
>               if (thisChild.getNodeType() == Node.TEXT_NODE):
>                 name = thisChild.getNodeValue()
>
>         # Get the text value for the element with tag name "machine_name"
>
>         nodeList = document.getElementsByTagName("machine_name")
>
>         for i in range(nodeList.getLength()):
>           node = nodeList.item(i)
>
>           if node.getNodeType() == Node.ELEMENT_NODE:
>             children = node.getChildNodes()
>
>             for j in range(children.getLength()):
>               thisChild = children.item(j)
>
>               if (thisChild.getNodeType() == Node.TEXT_NODE):
>                 machine_name = thisChild.getNodeValue()
>       </script>
>
>       <return>[name, machine_name]</return>
>
>     </sequence>
>   </function>
>
>   <script>
>     # These imports only need to be done once per job, no matter
>     # how many xml documents are parsed
>     from *java.io* <http://java.io/> import File
>     from *java.io* <http://java.io/> import StringReader
>     from org.xml.sax import InputSource
>     from org.xml.sax import SAXParseException
>     from org.xml.sax.helpers import DefaultHandler
>     from javax.xml.parsers import DocumentBuilderFactory
>     from javax.xml.parsers import DocumentBuilder
>     from org.w3c.dom import Document
>     from org.w3c.dom import Element
>     from org.w3c.dom import Node
>     from org.w3c.dom import NodeList
>   </script>
>
> </stax>
>
>
> --------------------------------------------------------------
> Sharon Lucas
> IBM Austin,   *luc...@us.ibm.com* <luc...@us.ibm.com>
> (512) 286-7313 or Tieline 363-7313
>
>
>   *Sangram Bakshi <**san...@gmail.com* <san...@gmail.com>*>*
>
> 04/06/2009 08:01 AM
>
>   To
> *staf-us...@lists.sourceforge.net* <staf-users@lists.sourceforge.net>  cc
>   Subject
> [staf-users] Parsing a XML file in a stax job.
>
>
>
>
>
> Hi ,
>
> I am trying to parse a xml file  and read values for it. For this i am
> trying to use the DocumentBuilderFactory.
> The xml i am trying to read is :
>
> <?xml version='1.0' encoding='utf-8'?>
> <Mydata>
> <name>QuickSanity</name>
> <machine_name>155.35.3.79,155.63.3.89,155.62.3.91</machine_name>
> </Mydata>
>
> I want to read the data in tag's <name> ,  <machine_name> (the array of ip
> address ). I want to read these values and store them in
> variables so that i can use them in my stax job later on.
>
> I am parsing them this way:
>
>
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <!DOCTYPE stax SYSTEM "stax.dtd">
> <stax>
>   <defaultcall function="Main"/>
>
>   <function name="Main">
>     <sequence>
>
>       <!-- Assign the file name of a STAX xml document you want to parse
> -->
>       <call function="'parseXML'">'c:/MyXml.xml'</call>
>       <script>
>         document = STAXResult
>
>         <I am not sure sure how to use the document builder API to get the
> xml files values here>
>
>         msg = '%s\nFound %s element ' % (msg,
> root.getElementsByTagName("name"))
>
>         for i in range(children.getLength()):
>           thisChild = children.item(i);
>
>           if (thisChild.getNodeType() == Node.ELEMENT_NODE and
>               thisChild.getNodeName() == 'defaultcall'):
>             msg = '%s\nFound defaultcall element' % (msg)
>           elif thisChild.getNodeType() == Node.COMMENT_NODE:
>             # Do nothing
>             continue
>           elif thisChild.getNodeType() == Node.ELEMENT_NODE:
>              msg = '%s\nFound %s element ' % (msg, thisChild.getNodeName())
>
>       </script>
>       <message>'Some parsed data: %s' % (msg)</message>
>       <log>'Some parsed data: %s' % (msg)</log>
>
>
>     </sequence>
>   </function>
>
>   <!-- *******************************************************************
> -->
>   <!-- Following function is used to parse an XML file and return the DOM
> -->
>   <!-- document object
> -->
>   <!-- *******************************************************************
> -->
>   <function name="parseXML" scope="local">
>     <function-list-args>
>       <function-required-arg name="xmlFileName">
>         Name of file containing XML to be parsed
>       </function-required-arg>
>     </function-list-args>
>     <sequence>
>       <!-- Parse the XML -->
>       <script>
>         factory = DocumentBuilderFactory.newInstance();
>         factory.setValidating(1)
>         factory.setIgnoringElementContentWhitespace(0)
>         builder  = factory.newDocumentBuilder()
>         document = builder.parse(xmlFileName)
>
>   </script>
>       <return>document</return>
>     </sequence>
>   </function>
>   <script>
>     # These imports only need to be done once per job, no matter
>     # how many xml documents are parsed
>     from *java.io* <http://java.io/> import File
>     from *java.io* <http://java.io/> import StringReader
>     from org.xml.sax import InputSource
>     from org.xml.sax import SAXParseException
>     from org.xml.sax.helpers import DefaultHandler
>     from javax.xml.parsers import DocumentBuilderFactory
>     from javax.xml.parsers import DocumentBuilder
>     from org.w3c.dom import Document
>     from org.w3c.dom import Element
>     from org.w3c.dom import Node
>     from org.w3c.dom import NodeList
>     </script>
> </stax>
>
>
>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> staf-users mailing list*
> **staf-us...@lists.sourceforge.net* <staf-users@lists.sourceforge.net>*
> **https://lists.sourceforge.net/lists/listinfo/staf-users*<https://lists.sourceforge.net/lists/listinfo/staf-users>
>
>
>
------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users

Reply via email to