You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@xml.apache.org by zo...@email.unc.edu on 2005/01/05 10:06:16 UTC

BIG PROBLEM

Hello,

I am Stefan a Grad student at UNC. I am working on research using Globus
and other grid services platforms. I am kinda stuck with getting the data
from MessageElement array. I have seen this mail:

http://www.mail-archive.com/axis-dev@xml.apache.org/msg09363.html

I have the same problems as the researcher. I see that she has attached a
MessageElementHelper class and that is deleted. I have attached a slice of
code below. Maybe you can give me some ideas how to parse the MessageElement:

MessageElement[] elements = res.get_any();

for( int i = 0; i < elements.length; i++ )
{
    System.out.println("Query result:");

    // an iterator over all attribute names
    java.util.Iterator printIter = elements[i].getAllAttributes();
    int k = 0;
    while( printIter.hasNext( ) )
    {
        Name n = ( Name )printIter.next( );
        k++;
    }
    Attributes att = elements[i].getAttributes( );
    System.out.println( "len = " + att.getLength( ) );
    System.out.println( "k = " + k );
}

Both of the len and k are 1. I have to expand the attribute.

The service data file is:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="BasicSensorData"

targetNamespace="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"

xmlns:tns="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<wsdl:types>
<schema
targetNamespace="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
        attributeFormDefault="qualified"
        elementFormDefault="qualified"
        xmlns="http://www.w3.org/2001/XMLSchema">

        <complexType name="BasicSensorDataType">
                <sequence>
                        <element name="data" type="int"/>
                        <element name="programName" type="string"/>
                        <element name="managerHost" type="string"/>
                        <element name="value" type="string"/>
                        <element name="dataType" type="string"/>
                        <element name="sensorName" type="string"/>
                </sequence>
        </complexType>

</schema>
</wsdl:types>

</wsdl:definitions>

As you may expect I need the values for all elements (data, programName,
managerHost, value, dataType, sensorName).

Any ideas will be of great help. Thank you.

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@xml.apache.org
For additional commands, e-mail: general-help@xml.apache.org


Re: BIG PROBLEM

Posted by zo...@email.unc.edu.
First of all thank you. The problem is that I do not have a file. I have only
the MessageElement array. I do not read any file, or build any document. From
that I can get the iterator, but it iterates through one attribute. I need to
expand that one. The essential part in youw code that I cannot use is:

Element rootElement = document.getRootElement();
Iterator elementList = rootElement.getDescendants(new
ElementFilter("element"));

Maybe you can detaliate more this solution.

                                                                  Stefan

Quoting Hugo Garcia <hu...@gmail.com>:

> I would use JDOM ( http://www.jdom.org ) in the following manner:
>
> import java.io.File;
> import java.io.IOException;
> import java.net.URL;
> import java.util.Iterator;
> import java.util.List;
>
>
> import org.jdom.Attribute;
> import org.jdom.Document;
> import org.jdom.Element;
> import org.jdom.JDOMException;
> import org.jdom.filter.ElementFilter;
> import org.jdom.input.SAXBuilder;
>
> /*
>  * Created on Jan 5, 2005
>  */
>
> /**
>  * @author Hugo A. Garcia
>  */
> public class ParserSpike {
>
> 	private File inputFile;
>
> 	/**
> 	 * @param outputFile
> 	 * @param inputFile
> 	 *
> 	 */
> 	public ParserSpike(File inputFile) {
> 		super();
> 		this.inputFile = inputFile;
> 		if (!inputFile.exists()) {
> 			System.out.println("The input file" + inputFile.getPath()
> 					+ "does not exist");
> 			System.exit(1);
> 		}
> 	}
>
> 	public static void main(String[] args) {
> 		File inputFile = new File(args[0]);
> 		new ParserSpike(inputFile).run();
> 	}
>
> 	/**
> 	 *
> 	 */
> 	private void run() {
> 		Document document = null;
> 		URL fileURL;
> 		SAXBuilder builder = new SAXBuilder();
>
> 		try {
> 			fileURL = inputFile.toURL();
> 			document = builder.build(fileURL);
> 			Element rootElement = document.getRootElement();
> 			Iterator elementList = rootElement.getDescendants(new
> ElementFilter("element"));
> 			while (elementList.hasNext()) {
> 				Element nextElement = (Element) elementList.next();
> 				List attributeList = nextElement.getAttributes();
> 				Iterator attributeIterator = attributeList.iterator();
> 				while (attributeIterator.hasNext()) {
> 					Attribute attribute = (Attribute) attributeIterator.next();
> 					System.out.print(attribute.getName() + " = " 
> +attribute.getValue() + " ");
> 				}
> 				System.out.println();
> 			}
> 		} catch (IOException e) {
> 			e.printStackTrace();
> 		} catch (JDOMException e) {
> 			e.printStackTrace();
> 		}
> 	}
> }
>
> The Output is the following:
>
> name = data type = int
> name = programName type = string
> name = managerHost type = string
> name = value type = string
> name = dataType type = string
> name = sensorName type = string
>
> -H
>
>
> On Wed,  5 Jan 2005 04:06:16 -0500, zota@email.unc.edu
> <zo...@email.unc.edu> wrote:
>> Hello,
>>
>> I am Stefan a Grad student at UNC. I am working on research using Globus
>> and other grid services platforms. I am kinda stuck with getting the data
>> from MessageElement array. I have seen this mail:
>>
>> http://www.mail-archive.com/axis-dev@xml.apache.org/msg09363.html
>>
>> I have the same problems as the researcher. I see that she has attached a
>> MessageElementHelper class and that is deleted. I have attached a slice of
>> code below. Maybe you can give me some ideas how to parse the 
>> MessageElement:
>>
>> MessageElement[] elements = res.get_any();
>>
>> for( int i = 0; i < elements.length; i++ )
>> {
>>     System.out.println("Query result:");
>>
>>     // an iterator over all attribute names
>>     java.util.Iterator printIter = elements[i].getAllAttributes();
>>     int k = 0;
>>     while( printIter.hasNext( ) )
>>     {
>>         Name n = ( Name )printIter.next( );
>>         k++;
>>     }
>>     Attributes att = elements[i].getAttributes( );
>>     System.out.println( "len = " + att.getLength( ) );
>>     System.out.println( "k = " + k );
>> }
>>
>> Both of the len and k are 1. I have to expand the attribute.
>>
>> The service data file is:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <wsdl:definitions name="BasicSensorData"
>>
>> targetNamespace="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
>>
>> xmlns:tns="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
>>         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
>>
>> <wsdl:types>
>> <schema
>> targetNamespace="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
>>         attributeFormDefault="qualified"
>>         elementFormDefault="qualified"
>>         xmlns="http://www.w3.org/2001/XMLSchema">
>>
>>         <complexType name="BasicSensorDataType">
>>                 <sequence>
>>                         <element name="data" type="int"/>
>>                         <element name="programName" type="string"/>
>>                         <element name="managerHost" type="string"/>
>>                         <element name="value" type="string"/>
>>                         <element name="dataType" type="string"/>
>>                         <element name="sensorName" type="string"/>
>>                 </sequence>
>>         </complexType>
>>
>> </schema>
>> </wsdl:types>
>>
>> </wsdl:definitions>
>>
>> As you may expect I need the values for all elements (data, programName,
>> managerHost, value, dataType, sensorName).
>>
>> Any ideas will be of great help. Thank you.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: general-unsubscribe@xml.apache.org
>> For additional commands, e-mail: general-help@xml.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@xml.apache.org
> For additional commands, e-mail: general-help@xml.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@xml.apache.org
For additional commands, e-mail: general-help@xml.apache.org


Re: BIG PROBLEM

Posted by Hugo Garcia <hu...@gmail.com>.
I would use JDOM ( http://www.jdom.org ) in the following manner:

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;


import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.filter.ElementFilter;
import org.jdom.input.SAXBuilder;

/*
 * Created on Jan 5, 2005
 */

/**
 * @author Hugo A. Garcia
 */
public class ParserSpike {

	private File inputFile;

	/**
	 * @param outputFile
	 * @param inputFile
	 * 
	 */
	public ParserSpike(File inputFile) {
		super();
		this.inputFile = inputFile;
		if (!inputFile.exists()) {
			System.out.println("The input file" + inputFile.getPath()
					+ "does not exist");
			System.exit(1);
		}
	}

	public static void main(String[] args) {
		File inputFile = new File(args[0]);
		new ParserSpike(inputFile).run();
	}

	/**
	 * 
	 */
	private void run() {
		Document document = null;
		URL fileURL;
		SAXBuilder builder = new SAXBuilder();
		
		try {
			fileURL = inputFile.toURL();
			document = builder.build(fileURL);
			Element rootElement = document.getRootElement();
			Iterator elementList = rootElement.getDescendants(new
ElementFilter("element"));
			while (elementList.hasNext()) {
				Element nextElement = (Element) elementList.next();
				List attributeList = nextElement.getAttributes();
				Iterator attributeIterator = attributeList.iterator();
				while (attributeIterator.hasNext()) {
					Attribute attribute = (Attribute) attributeIterator.next();
					System.out.print(attribute.getName() + " = " +attribute.getValue() + " ");
				}
				System.out.println();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (JDOMException e) {
			e.printStackTrace();
		}
	}
}

The Output is the following:

name = data type = int 
name = programName type = string 
name = managerHost type = string 
name = value type = string 
name = dataType type = string 
name = sensorName type = string 

-H


On Wed,  5 Jan 2005 04:06:16 -0500, zota@email.unc.edu
<zo...@email.unc.edu> wrote:
> Hello,
> 
> I am Stefan a Grad student at UNC. I am working on research using Globus
> and other grid services platforms. I am kinda stuck with getting the data
> from MessageElement array. I have seen this mail:
> 
> http://www.mail-archive.com/axis-dev@xml.apache.org/msg09363.html
> 
> I have the same problems as the researcher. I see that she has attached a
> MessageElementHelper class and that is deleted. I have attached a slice of
> code below. Maybe you can give me some ideas how to parse the MessageElement:
> 
> MessageElement[] elements = res.get_any();
> 
> for( int i = 0; i < elements.length; i++ )
> {
>     System.out.println("Query result:");
> 
>     // an iterator over all attribute names
>     java.util.Iterator printIter = elements[i].getAllAttributes();
>     int k = 0;
>     while( printIter.hasNext( ) )
>     {
>         Name n = ( Name )printIter.next( );
>         k++;
>     }
>     Attributes att = elements[i].getAttributes( );
>     System.out.println( "len = " + att.getLength( ) );
>     System.out.println( "k = " + k );
> }
> 
> Both of the len and k are 1. I have to expand the attribute.
> 
> The service data file is:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions name="BasicSensorData"
> 
> targetNamespace="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
> 
> xmlns:tns="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
>         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
> 
> <wsdl:types>
> <schema
> targetNamespace="http://www.renci.org/namespaces/2004/Autopilot/BasicSensorService_sd/BasicSensorSDE"
>         attributeFormDefault="qualified"
>         elementFormDefault="qualified"
>         xmlns="http://www.w3.org/2001/XMLSchema">
> 
>         <complexType name="BasicSensorDataType">
>                 <sequence>
>                         <element name="data" type="int"/>
>                         <element name="programName" type="string"/>
>                         <element name="managerHost" type="string"/>
>                         <element name="value" type="string"/>
>                         <element name="dataType" type="string"/>
>                         <element name="sensorName" type="string"/>
>                 </sequence>
>         </complexType>
> 
> </schema>
> </wsdl:types>
> 
> </wsdl:definitions>
> 
> As you may expect I need the values for all elements (data, programName,
> managerHost, value, dataType, sensorName).
> 
> Any ideas will be of great help. Thank you.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@xml.apache.org
> For additional commands, e-mail: general-help@xml.apache.org
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@xml.apache.org
For additional commands, e-mail: general-help@xml.apache.org