2010-09-01 2 views
3

У меня есть данные класса Element. Я пытаюсь записать его значения в файл, но у меня возникают проблемы:Запись объекта элемента в файл с помощью 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 

Любые предложения по поводу того, как я должен обращаться с этим делом? Кроме того, как мне лучше всего видеть (например, распечатать на экране) доступные статические переменные и методы, связанные с объектом? Спасибо.

Другие фрагменты кода, чтобы помочь отладки:

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

Каков тип возвращаемого метода getValueAsString? Это означает, что это возвращение не является строкой, а последовательностью. –

+0

Как проверить тип возврата? – Zhang18

+0

В принципе метод getValueAsString * не работает над этим объектом 'field' (!) И код ошибки - это то, что я показал в комментарии. Я попытался напечатать 'field.getClass()', и я получаю 'com.bloomberglp.blpapi.impl.aB' Означает ли это, поскольку это собственный класс Bloomberg, хотя он называется Element, он не ведет себя как общий класс Element в Java? – Zhang18

ответ

5

Оказывается, что эта структура данных Bloomberg Prop является многословно, мягко говоря:

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"); 

whew ... Я не думаю, что они пытаются сделать это легким! Мне также любопытно, был ли способ, которым я мог бы это понять, если бы Java напечатал правильный метод для отслеживания структуры данных?

0

Это звучит, как вы пытаетесь напечатать значение элемента поля ввода?

Если да, то попробуйте:

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

Пробовал. Он говорит: 'Метод getAttribute (String) не определен для типа Element' ... – Zhang18

+0

- это объект Element, с которым вы используете org.w3c.dom.Element? –

+0

На самом деле понятия не имею. Просто добавили еще несколько фрагментов кода для вашей справки. – 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    
    } 
    } 

} 
Смежные вопросы