返回列表 上一筆 下一筆

📄 資料內容

import org.w3c.dom.*;

import javax.xml.parsers.*;

import java.io.File;

import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

import java.util.*;



public class XmlTreeParser {



    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");



    public static void main(String[] args) throws Exception {

        File xmlFile = new File("tree.xml"); // 你的 XML

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        DocumentBuilder builder = factory.newDocumentBuilder();

        Document doc = builder.parse(xmlFile);

        doc.getDocumentElement().normalize();



        NodeList list = doc.getElementsByTagName("TreeSubdir");



        List<TreeNodeBean> result = new ArrayList<>();

        for (int i = 0; i < list.getLength(); i++) {

            Element e = (Element) list.item(i);



            String sftPath  = getTagValue(e, "sft_path");

            String iftSid   = getTagValue(e, "ift_sid");

            String sftName  = getTagValue(e, "sft_name");

            String iKBCount = getTagValue(e, "iKBCount");

            String dInit    = getTagValue(e, "dinit_time");

            String dModi    = getTagValue(e, "dmodi_time");

            String iftPrev  = getTagValue(e, "ift_prev");



            TreeNodeBean bean = new TreeNodeBean();

            bean.setId(iftSid);

            bean.setParentId(iftPrev);

            bean.setName(sftName);

            bean.setPathRaw(sftPath);

            bean.setPathParts(Arrays.asList(sftPath.split("\\\\"))); // 切開路徑

            bean.setKbCount(iKBCount);

            bean.setInitTime(LocalDateTime.parse(dInit, FORMATTER));

            bean.setModiTime(LocalDateTime.parse(dModi, FORMATTER));



            result.add(bean);

        }



        // 測試輸出

        result.forEach(b -> System.out.println(b.getId() + " " + b.getName() + " " + b.getInitTime()));

    }



    private static String getTagValue(Element e, String tag) {

        NodeList nl = e.getElementsByTagName(tag);

        if (nl.getLength() > 0) {

            return nl.item(0).getTextContent().trim();

        }

        return "";

    }

}

🔐 Base64 編碼內容

aW1wb3J0IG9yZy53M2MuZG9tLio7CgppbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuKjsKCmltcG9ydCBqYXZhLmlvLkZpbGU7CgppbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWU7CgppbXBvcnQgamF2YS50aW1lLmZvcm1hdC5EYXRlVGltZUZvcm1hdHRlcjsKCmltcG9ydCBqYXZhLnV0aWwuKjsKCgoKcHVibGljIGNsYXNzIFhtbFRyZWVQYXJzZXIgewoKCgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRGF0ZVRpbWVGb3JtYXR0ZXIgRk9STUFUVEVSID0gRGF0ZVRpbWVGb3JtYXR0ZXIub2ZQYXR0ZXJuKCJ5eXl5L01NL2RkIEhIOm1tOnNzIik7CgoKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKCiAgICAgICAgRmlsZSB4bWxGaWxlID0gbmV3IEZpbGUoInRyZWUueG1sIik7IC8vIOS9oOeahCBYTUwKCiAgICAgICAgRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSBmYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwoKICAgICAgICBEb2N1bWVudEJ1aWxkZXIgYnVpbGRlciA9IGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CgogICAgICAgIERvY3VtZW50IGRvYyA9IGJ1aWxkZXIucGFyc2UoeG1sRmlsZSk7CgogICAgICAgIGRvYy5nZXREb2N1bWVudEVsZW1lbnQoKS5ub3JtYWxpemUoKTsKCgoKICAgICAgICBOb2RlTGlzdCBsaXN0ID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUcmVlU3ViZGlyIik7CgoKCiAgICAgICAgTGlzdDxUcmVlTm9kZUJlYW4+IHJlc3VsdCA9IG5ldyBBcnJheUxpc3Q8PigpOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3QuZ2V0TGVuZ3RoKCk7IGkrKykgewoKICAgICAgICAgICAgRWxlbWVudCBlID0gKEVsZW1lbnQpIGxpc3QuaXRlbShpKTsKCgoKICAgICAgICAgICAgU3RyaW5nIHNmdFBhdGggID0gZ2V0VGFnVmFsdWUoZSwgInNmdF9wYXRoIik7CgogICAgICAgICAgICBTdHJpbmcgaWZ0U2lkICAgPSBnZXRUYWdWYWx1ZShlLCAiaWZ0X3NpZCIpOwoKICAgICAgICAgICAgU3RyaW5nIHNmdE5hbWUgID0gZ2V0VGFnVmFsdWUoZSwgInNmdF9uYW1lIik7CgogICAgICAgICAgICBTdHJpbmcgaUtCQ291bnQgPSBnZXRUYWdWYWx1ZShlLCAiaUtCQ291bnQiKTsKCiAgICAgICAgICAgIFN0cmluZyBkSW5pdCAgICA9IGdldFRhZ1ZhbHVlKGUsICJkaW5pdF90aW1lIik7CgogICAgICAgICAgICBTdHJpbmcgZE1vZGkgICAgPSBnZXRUYWdWYWx1ZShlLCAiZG1vZGlfdGltZSIpOwoKICAgICAgICAgICAgU3RyaW5nIGlmdFByZXYgID0gZ2V0VGFnVmFsdWUoZSwgImlmdF9wcmV2Iik7CgoKCiAgICAgICAgICAgIFRyZWVOb2RlQmVhbiBiZWFuID0gbmV3IFRyZWVOb2RlQmVhbigpOwoKICAgICAgICAgICAgYmVhbi5zZXRJZChpZnRTaWQpOwoKICAgICAgICAgICAgYmVhbi5zZXRQYXJlbnRJZChpZnRQcmV2KTsKCiAgICAgICAgICAgIGJlYW4uc2V0TmFtZShzZnROYW1lKTsKCiAgICAgICAgICAgIGJlYW4uc2V0UGF0aFJhdyhzZnRQYXRoKTsKCiAgICAgICAgICAgIGJlYW4uc2V0UGF0aFBhcnRzKEFycmF5cy5hc0xpc3Qoc2Z0UGF0aC5zcGxpdCgiXFxcXCIpKSk7IC8vIOWIh+mWi+i3r+W+kQoKICAgICAgICAgICAgYmVhbi5zZXRLYkNvdW50KGlLQkNvdW50KTsKCiAgICAgICAgICAgIGJlYW4uc2V0SW5pdFRpbWUoTG9jYWxEYXRlVGltZS5wYXJzZShkSW5pdCwgRk9STUFUVEVSKSk7CgogICAgICAgICAgICBiZWFuLnNldE1vZGlUaW1lKExvY2FsRGF0ZVRpbWUucGFyc2UoZE1vZGksIEZPUk1BVFRFUikpOwoKCgogICAgICAgICAgICByZXN1bHQuYWRkKGJlYW4pOwoKICAgICAgICB9CgoKCiAgICAgICAgLy8g5ris6Kmm6Ly45Ye6CgogICAgICAgIHJlc3VsdC5mb3JFYWNoKGIgLT4gU3lzdGVtLm91dC5wcmludGxuKGIuZ2V0SWQoKSArICIgIiArIGIuZ2V0TmFtZSgpICsgIiAiICsgYi5nZXRJbml0VGltZSgpKSk7CgogICAgfQoKCgogICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldFRhZ1ZhbHVlKEVsZW1lbnQgZSwgU3RyaW5nIHRhZykgewoKICAgICAgICBOb2RlTGlzdCBubCA9IGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnKTsKCiAgICAgICAgaWYgKG5sLmdldExlbmd0aCgpID4gMCkgewoKICAgICAgICAgICAgcmV0dXJuIG5sLml0ZW0oMCkuZ2V0VGV4dENvbnRlbnQoKS50cmltKCk7CgogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICIiOwoKICAgIH0KCn0K
返回列表 上一筆 下一筆