Привет! Есть к примеру 2 файла xml такого содержания: 1.xml
| Код | <?xml version = "1.0"?> <note> <to>Вася</to> <from>Мария</from> <head>Напоминание</head> </note>
|
2.xml
| Код | <?xml version = "1.0"?> <note> <to>Петя</to> <from>Мария</from> <head>Ответ</head> </note>
|
Я парсю эти файлы, и на выходе получаю
| Код | Список отправителей: Мария Мария Список получателей: Вася Петя Заголовок: Напоминание Ответ
|
Но мне нужно, чтобы одинаковые имена не повторялись на выходе. Мне говорили, что есть какой то фильтр, но я что то не могу найти его. Main.java
| Код | public class Main {
public static void main(String[] args) throws Exception {
TagHandler xml = new TagHandler(); ArrayList<String> xmlFiles = new ArrayList<>(); File dir = new File("D:\\SourceCode\\NetBeans\\Java\\BGPU\\ParseXMLFile"); BufferedWriter out = new BufferedWriter(new FileWriter("out.txt")); out.append("Список отправителей: "); out.newLine(); for (File file : dir.listFiles()) { if (file.getName().endsWith(".xml")) { xmlFiles.add(file.getName()); xml.read(dir, file.getName()); out.append(" " + xml.getFrom()); out.newLine(); } } out.append("Список получателей: "); out.newLine(); for (File file : dir.listFiles()) { if (file.getName().endsWith(".xml")) { xmlFiles.add(file.getName()); xml.read(dir, file.getName()); out.append(" " + xml.getTo()); out.newLine(); } } out.append("Заголовок: "); out.newLine(); for (File file : dir.listFiles()) { if (file.getName().endsWith(".xml")) { xmlFiles.add(file.getName()); xml.read(dir, file.getName()); out.append(" " + xml.getHead()); out.newLine(); } } out.close(); } }
|
TagHandler.java
| Код | public class TagHandler extends Tag {
public void read(File dir, String fileName) throws Exception { BufferedReader in = new BufferedReader(new FileReader(fileName));
String content; String temp; StringTokenizer st; while ((content = in.readLine()) != null) { st = new StringTokenizer(content, "<>"); while (st.hasMoreTokens()) { switch (st.nextToken()) { case "to": if ((temp = st.nextToken()) != "/to") { setTo(temp); break; } case "from": if ((temp = st.nextToken()) != "/from") { setFrom(temp); break; } case "head": if ((temp = st.nextToken()) != "/head") { setHead(temp); break; } } } } in.close(); } }
|
Tag.java
| Код | public class Tag { String toTag; String fromTag; String headTag; String bodyTag;
public void setTo(String to) { toTag = to; } public void setFrom(String from) { fromTag = from; } public void setHead(String head) { headTag = head; } public String getTo() { return toTag; } public String getFrom() { return fromTag; } public String getHead() { return headTag; } }
|
|