Запись объекта Element в файл с использованием Java - PullRequest
3 голосов
/ 02 сентября 2010

У меня есть данные класса Element.Я пытаюсь записать его значения в файл, но у меня возникают проблемы:

< 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

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

Дополнительные фрагменты кода для отладки:

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

Ответы [ 4 ]

5 голосов
/ 02 сентября 2010

Оказывается, что эта структура данных 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");

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

1 голос
/ 28 ноября 2012
 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              
   } 
  }

 }
0 голосов
/ 02 сентября 2010

Проверьте это, для вашего второго вопроса: http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html

0 голосов
/ 02 сентября 2010

Похоже, вы пытаетесь напечатать значение элемента поля ввода?

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

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