作業部屋の使い方を試しています。
新メソッド案
| @@ -57,11 +57,25 @@ | ||
| 57 | 57 | */ |
| 58 | 58 | public class SearchDataRW { |
| 59 | 59 | |
| 60 | + DocumentBuilder builder; | |
| 61 | + Document document; | |
| 62 | + Element root; | |
| 63 | + | |
| 60 | 64 | private final String splitchar = "\t"; |
| 61 | 65 | |
| 62 | 66 | private String UrlAdress; |
| 63 | 67 | private ArrayList slist; |
| 64 | 68 | |
| 69 | + public SearchDataRW() { | |
| 70 | + try { | |
| 71 | + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); | |
| 72 | + builder = factory.newDocumentBuilder(); | |
| 73 | + | |
| 74 | + } catch (ParserConfigurationException ex) { | |
| 75 | + Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 76 | + } | |
| 77 | + } | |
| 78 | + | |
| 65 | 79 | public void seturl(String UrlAdress) { |
| 66 | 80 | this.UrlAdress = UrlAdress; |
| 67 | 81 | } |
| @@ -300,4 +314,161 @@ | ||
| 300 | 314 | } |
| 301 | 315 | } |
| 302 | 316 | |
| 317 | + | |
| 318 | + public String loadUrl() { | |
| 319 | + String urladdress; | |
| 320 | + | |
| 321 | + NodeList nodelist = root.getElementsByTagName("url"); | |
| 322 | + Node node = nodelist.item(0); | |
| 323 | + urladdress = node.getFirstChild().getNodeValue(); | |
| 324 | + | |
| 325 | + return urladdress; | |
| 326 | + } | |
| 327 | + | |
| 328 | + public ArrayList<SearchData> loadSearchList() { | |
| 329 | + ArrayList<SearchData> slist = new ArrayList<>(); | |
| 330 | + | |
| 331 | + NodeList nodelist = root.getElementsByTagName("searchlist"); | |
| 332 | + for(int i = 0; i < nodelist.getLength(); i++) { | |
| 333 | + Node childnode = nodelist.item(i); | |
| 334 | + | |
| 335 | + boolean sdatflg = false; | |
| 336 | + SearchData sdat = new SearchData(); | |
| 337 | + | |
| 338 | + //NodeList childnodelist = childnode.getChildNodes(); | |
| 339 | + //for(int j = 0; j < childnodelist.getLength(); j++) { | |
| 340 | + // Node child = childnodelist.item(j); | |
| 341 | + | |
| 342 | + for (Node child = childnode.getFirstChild(); | |
| 343 | + child != null; child = child.getNextSibling()) { | |
| 344 | + | |
| 345 | + if(child.getNodeType() == Node.ELEMENT_NODE) { | |
| 346 | + | |
| 347 | + String tag = child.getNodeName(); | |
| 348 | + String rtn = ""; | |
| 349 | + if(child.getFirstChild() != null) { | |
| 350 | + rtn = child.getFirstChild().getNodeValue(); | |
| 351 | + } | |
| 352 | + | |
| 353 | + switch (tag) { | |
| 354 | + case "item" : | |
| 355 | + sdat.setitem(rtn); | |
| 356 | + sdatflg = true; | |
| 357 | + break; | |
| 358 | + case "htmltag" : | |
| 359 | + sdat.setHtmltag(rtn); | |
| 360 | + sdatflg = true; | |
| 361 | + break; | |
| 362 | + case "htmlid" : | |
| 363 | + sdat.setHtmlid(rtn); | |
| 364 | + sdatflg = true; | |
| 365 | + break; | |
| 366 | + case "htmlclass" : | |
| 367 | + sdat.setHtmlclass(rtn); | |
| 368 | + sdatflg = true; | |
| 369 | + break; | |
| 370 | + case "around" : | |
| 371 | + sdat.setaround(rtn); | |
| 372 | + sdatflg = true; | |
| 373 | + break; | |
| 374 | + case "regexp" : | |
| 375 | + sdat.setregexp(rtn); | |
| 376 | + sdatflg = true; | |
| 377 | + break; | |
| 378 | + } | |
| 379 | + } | |
| 380 | + } | |
| 381 | + if(sdatflg) slist.add(sdat); | |
| 382 | + } | |
| 383 | + return slist; | |
| 384 | + } | |
| 385 | + | |
| 386 | + public void saveUrl(String urladdress) { | |
| 387 | + checkdoc(); | |
| 388 | + removeElement("url"); // 既にElementが存在してた場合、一度削除 | |
| 389 | + | |
| 390 | + Element url = document.createElement("url"); | |
| 391 | + url.appendChild(document.createTextNode(urladdress)); | |
| 392 | + root.appendChild(url); | |
| 393 | + } | |
| 394 | + | |
| 395 | + public void saveSearchList(ArrayList slist) { | |
| 396 | + checkdoc(); | |
| 397 | + removeElement("searchlist"); // 既にElementが存在してた場合、一度削除 | |
| 398 | + | |
| 399 | + for (Object slist1 : slist) { | |
| 400 | + SearchData sdat = (SearchData) slist1; | |
| 401 | + | |
| 402 | + Element cslist = document.createElement("searchlist"); | |
| 403 | + | |
| 404 | + addChild(cslist, "item", sdat.getitem()); | |
| 405 | + addChild(cslist, "htmltag", sdat.getHtmltag()); | |
| 406 | + addChild(cslist, "htmlid", sdat.getHtmlid()); | |
| 407 | + addChild(cslist, "htmlclass", sdat.getHtmlclass()); | |
| 408 | + addChild(cslist, "around", sdat.getaround()); | |
| 409 | + addChild(cslist, "regexp", sdat.getregexp()); | |
| 410 | + | |
| 411 | + root.appendChild(cslist); | |
| 412 | + } | |
| 413 | + } | |
| 414 | + | |
| 415 | + private void addChild(Element cslist, String keyword, String data) { | |
| 416 | + if(!data.isEmpty()) { | |
| 417 | + Element element = document.createElement(keyword); | |
| 418 | + element.appendChild(document.createTextNode(data)); | |
| 419 | + cslist.appendChild(element); | |
| 420 | + } | |
| 421 | + } | |
| 422 | + | |
| 423 | + private void removeElement(String elementTagName) { | |
| 424 | + NodeList nodelist = document.getElementsByTagName(elementTagName); | |
| 425 | + for(int i = 0; i < nodelist.getLength(); i++) { | |
| 426 | + Node node = nodelist.item(i); | |
| 427 | + root.removeChild(node); | |
| 428 | + } | |
| 429 | + } | |
| 430 | + | |
| 431 | + private void checkdoc() { | |
| 432 | + if(document == null) { | |
| 433 | + DOMImplementation domImpl = builder.getDOMImplementation(); | |
| 434 | + document = domImpl.createDocument("","searchdata",null); | |
| 435 | + } | |
| 436 | + root = document.getDocumentElement(); | |
| 437 | + } | |
| 438 | + | |
| 439 | + /** | |
| 440 | + * XML読込み. | |
| 441 | + * @param file | |
| 442 | + */ | |
| 443 | + public void read(File file) { | |
| 444 | + try { | |
| 445 | + document = builder.parse(file); | |
| 446 | + root = document.getDocumentElement(); | |
| 447 | + | |
| 448 | + } catch (SAXException | IOException ex) { | |
| 449 | + Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 450 | + } | |
| 451 | + } | |
| 452 | + | |
| 453 | + /** | |
| 454 | + * XML書込み. | |
| 455 | + * @param file | |
| 456 | + */ | |
| 457 | + public void write(File file) { | |
| 458 | + try { | |
| 459 | + TransformerFactory transFactory = TransformerFactory.newInstance(); | |
| 460 | + Transformer transformer = transFactory.newTransformer(); | |
| 461 | + | |
| 462 | + DOMSource source = new DOMSource(document); | |
| 463 | + FileOutputStream os = new FileOutputStream(file); | |
| 464 | + StreamResult result = new StreamResult(os); | |
| 465 | + transformer.transform(source, result); | |
| 466 | + | |
| 467 | + } catch (TransformerConfigurationException ex) { | |
| 468 | + Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 469 | + } catch (FileNotFoundException | TransformerException ex) { | |
| 470 | + Logger.getLogger(SearchDataRW.class.getName()).log(Level.SEVERE, null, ex); | |
| 471 | + } | |
| 472 | + } | |
| 473 | + | |
| 303 | 474 | } |