2010-09-01 11 views
3

J'ai une donnée de classe Element. Je suis en train d'écrire ses valeurs dans un fichier mais je ne parviens pas à:Ecriture d'un objet Element dans un fichier en utilisant java

< Some process to acquire values into the variable "fieldData" > 

// Prepare file output 
FileWriter fstream = new FileWriter("C:/output.txt"); 
BufferedWriter out = new BufferedWriter(fstream); 

Element field = fieldData.getElement(i); 

out.write(field); // DOESN'T WORK: The method write(int) in the type BufferedWriter is not applicable for the arguments (Element) 
out.write(field.getValueAsString()); // DOESN'T WORK: Cannot convert SEQUENCE to String 

Toutes les suggestions sur la façon dont je traiter ce cas? En outre, quel est le meilleur moyen pour moi de voir (c'est-à-dire imprimer à l'écran) les variables statiques disponibles et les méthodes associées à un objet? THX.

Plus des extraits de code pour aider debug:

private static final Name SECURITY_DATA = new Name("securityData"); 
private static final Name FIELD_DATA = new Name("fieldData"); 

Element securityDataArray = msg.getElement(SECURITY_DATA); // msg is a Bloomberg desktop API object 
Element securityData = securityDataArray.getValueAsElement(0); 
Element fieldData = securityData.getElement(FIELD_DATA); 
Element field = fieldData.getElement(0) 
out.write(field); // DOESN'T WORK: The method write(int) in the type BufferedWriter is not applicable for the arguments (Element) 
out.write(field.getValueAsString()); // DOESN'T WORK: Cannot convert SEQUENCE to String 
+0

Quel est le type de retour de la méthode "getValueAsString"? Il semble que ce retour n'est PAS une chaîne mais une SEQUENCE. –

+0

Comment vérifier le "type de retour"? – Zhang18

+0

Fondamentalement, la méthode 'getValueAsString' * ne fonctionne pas sur cet objet' field' (!) Et le code d'erreur est ce que j'ai montré dans le commentaire. J'ai essayé d'imprimer 'field.getClass()' et j'obtiens 'com.bloomberglp.blpapi.impl.aB' Est-ce que cela veut dire que c'est une classe propriétaire de Bloomberg, même si elle s'appelle Element, elle ne se comporte pas comme la classe d'élément générique en Java? – Zhang18

Répondre

5

Transforme que cette structure de données Bloomberg Prop est de longue haleine pour le moins:

private static final Name SECURITY_DATA = new Name("securityData"); 
private static final Name FIELD_DATA = new Name("fieldData"); 

Element securityDataArray = msg.getElement(SECURITY_DATA); // msg is a Bloomberg desktop API object 
Element securityData = securityDataArray.getValueAsElement(0); 
Element fieldData = securityData.getElement(FIELD_DATA); 
Element field = fieldData.getElement(0); 

/* the above codes were known at the time of the question */ 
/* below is what I was shown by a bloomberg representative */ 

Element bulkElement = field.getValueAsElement(0); 
Element elem = bulkElement.getElement(0); 
out.write(elem.name() + "\t" + elem.getValueAsString() + "\n"); 

ouf ... Je ne pense pas qu'ils essaient de le rendre facile! Je suis également curieux de savoir s'il y avait un moyen que j'aurais pu comprendre cela en ayant Java imprimer la bonne méthode à utiliser pour traquer la structure de données?

0

On dirait que vous essayez d'imprimer la valeur d'un élément de champ d'entrée?

Si oui, essayez:

out.write(field.getAttribute("value")); 
+0

Essayé. Il dit 'La méthode getAttribute (String) est indéfinie pour le type Element' ... – Zhang18

+0

est l'objet Element que vous utilisez org.w3c.dom.Element? –

+0

Je n'en ai vraiment aucune idée. Juste ajouté quelques extraits de code pour votre référence. – Zhang18

1
Element element = msg.GetElement("securityData"); 
for (int i = 0; i < element.NumValues; i++) 
{ 

    Element security = element.GetValueAsElement(i); //ie: DJI INDEX 
    Element fields = security.GetElement("fieldData");//ie: INDX_MEMBERS 

    for (int j = 0; j < fields.NumElements; j++) 
    { 
    Element field = fields.GetElement(j); //a list of members 

    for (int k = 0; k < field.NumValues; k++) 
    { 
     //print field.GetValueAsElement(k); //print members name    
    } 
    } 

}