Как можно загрузить из xml файла только нужные а не все? - Java
Формулировка задачи:
Например у меня есть вот такие данные! Могу ли нажать определенную кнопку и загрузить только по категории Транспорта? Спасибо заранее!
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CП>
<Ко>
<Список>Авто1</Список>
<Коментарии>123</Коментарии>
<Категория>Транспорт</Категория>
</Ко>
<Ко>
<Список>Авто2</Список>
<Коментарии>569</Коментарии>
<Категория>Транспорт</Категория>
</Ко>
<Ко>
<Список>Спорт</Список>
<Коментарии>789</Коментарии>
<Категория>Развлечение</Категория>
</Ко>
</CП>
Решение задачи: «Как можно загрузить из xml файла только нужные а не все?»
textual
Листинг программы
package Table;
import java.awt.Font;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
public class StAX
{
public JFrame window = new JFrame("Good day");
public ArrayList<String> arrLogo = new ArrayList<String>();
public StAX()
{
window.setSize(1024, 768);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(null);
window.setResizable(false);
window.setLocationRelativeTo(null);
StAXparcer();
window.setVisible(true);
}
private void StAXparcer()
{
String fileName = "data/data.xml";
try
{
XMLStreamReader xmlr = XMLInputFactory.newInstance().createXMLStreamReader(fileName, new FileInputStream(fileName));
while (xmlr.hasNext())
{
xmlr.next();
if (xmlr.isStartElement() && xmlr.getLocalName().equals("position"))//если натыкаемся на данный тег то срабатывает условие показывая что внутри
{
xmlr.next();
arrLogo.add(xmlr.getText());
System.out.println(xmlr.getText());
}
if (xmlr.isStartElement() && xmlr.getLocalName().equals("name"))
{
xmlr.next();
arrLogo.add(xmlr.getText());
System.out.println(xmlr.getText());
}
if (!xmlr.hasNext())
{
start_consructor();
break;
}
}
}
catch (FileNotFoundException e)
{
//...
}
catch (XMLStreamException e)
{
//...
}
catch (FactoryConfigurationError e)
{
//...
}
}
private void start_consructor()
{
JLabel text = new JLabel("<html><div align="right"><b>УТВЕРЖДАЮ</b></div><p align="right">"+arrLogo.get(0)+" "ООО Хентай клуб любителей горничных"</p><p align="right"><br>"+arrLogo.get(1)+"</p></html>");
text.setBounds(200, 0, 500, 100);
text.setFont(new Font("Arial",0,16));
text.setHorizontalAlignment(SwingConstants.RIGHT);
JPanel container = new JPanel();
container.setLayout(null);
container.setBounds((1024-700)/2, 10, 700, 100);
container.add(text);
window.add(container);
}
public static void main(String[] args)
{
new StAX();
}
}