Непосредственно показывать XML-запись в jtable-запись - PullRequest
0 голосов
/ 13 октября 2009

Я программист на С ++, но новичок в мире Java. Я должен отобразить данные XML непосредственно в jtable.

Say,

xml имеет следующий формат

<Name> Tom </Name>
<DateofBirth> 12/3/1985 </DateofBirth>
<country> US </country>

Тогда таблицу нужно отобразить следующим образом

Name    |     DateofBirth | Country

Tom      12/3/1985       Us

Это выполнимо? Если да, то можете ли вы предоставить образец?

Ответы [ 3 ]

1 голос
/ 13 октября 2009

Да, это очень выполнимо. Есть 2 шага к этому процессу. Первый - это разобрать xml. Примером Java-кода для разбора xml будет (в этом примере показано получение узла person из xml-файла, но его легко можно адаптировать к вашему xml-файлу):

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse("xml/sample.xml");
NodeList personNodes = document.getElementsByTagName("person");
List<String> names = new LinkedList<String>();
for (int i = 0; i < personNodes.getLength(); i++) {
  String firstName = null;
  String lastName = null;
  Node personNode = personNodes.item(i);
  NodeList children = personNode.getChildNodes();
  for (int j = 0; j < children.getLength(); j++) {
  Node child = children.item(j);
  String nodeName = child.getNodeName();
  String nodeValue = child.getTextContent();
  if ("firstName".equals(nodeName)) {
    firstName = nodeValue;
  } else if ("lastName".equals(nodeName)) {
   lastName = nodeValue;
  } 
}
names.add(firstName + " " + lastName);
} 

После того, как вы извлекли нужные данные, создали новый JTable, который использует эти данные. Простейший конструктор JTable для использования в ваших целях:

JTable(Object[][] rowData, Object[] columnNames) 

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

0 голосов
/ 13 октября 2009

TableModel - это интерфейс. Если вы действительно хотите заполнить свою таблицу непосредственно из документа XML, напишите пользовательскую реализацию интерфейса TableModel, которая получает / устанавливает значения из вашего объекта DOM в памяти.

Одним из преимуществ этого является то, что вы можете поддерживать редактирование таблицы и применять изменения непосредственно к вашим элементам XML.

Просто учтите, что эти методы TableModel вызываются ОЧЕНЬ ЧАСТО и поэтому должны быть очень быстрыми. Если вы имеете дело с большими XML-документами, скорость произвольного доступа для доступа к отдельной ячейке может быть недостаточно высокой.

0 голосов
/ 13 октября 2009

Это, безусловно, выполнимо.

Я бы обратился к библиотеке JDOM , которая предоставляет простой API для XML. Его проще использовать, чем стандартные, но несколько громоздкие DOM / SAX библиотеки.

Если у вас есть схема для вышеприведенного XML, JAXB может представлять интерес, хотя и довольно тяжелый.

Однако я не могу достоверно посоветовать со стороны Swing / JTable. Я уверен, что есть много людей, которые могут позаботиться об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...