2009-10-13 3 views
0

Я программист на C++, но новичок в мире java. Я должен отображать данные xml непосредственно в jtable.Прямо показать запись XML в запись jtable

Say,

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

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

Затем стол должен быть экран отображается следующим образом

Name |  DateofBirth | Country 

Tom  12/3/1985  Us 

ли это выполнимо? Если да, пожалуйста, укажите образец?

ответ

1

Да, это очень удобно. Для этого есть 2 шага. Первый - проанализировать xml. Некоторые образцы Java код для синтаксического анализа XML будет (этот пример демонстрирует получение «лицо» узел из файла 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

Спасибо за обмен кода, смог найти то же самое на следующей странице. Благодаря!!! http://www.developerfusion.com/code/2064/a-simple-way-to-read-an-xml-file-in-java/ – coolcake

+0

Нет проблем. Я действительно взял его из своего блога http://jeffastorey.blogspot.com/2009/10/getting-groovy-with-xml-parsing.html и показал, как вы можете сделать это только в двух строках с groovy (помещая его в JTable будет еще несколько строк). –

0

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

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

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

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

0

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

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

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