返回列表 上一筆 下一筆

📄 資料內容

import javax.xml.parsers.*;



public class XmlFactoryHolder {

    private static final DocumentBuilderFactory FACTORY;



    static {

        FACTORY = DocumentBuilderFactory.newInstance();

        try {

            // 安全設定(防 XXE)

            FACTORY.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

            FACTORY.setFeature("http://xml.org/sax/features/external-general-entities", false);

            FACTORY.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

            FACTORY.setXIncludeAware(false);

            FACTORY.setExpandEntityReferences(false);

        } catch (Exception e) {

            throw new RuntimeException("XML Factory init failed", e);

        }

    }



    public static DocumentBuilder newBuilder() {

        try {

            return FACTORY.newDocumentBuilder(); // 每次要新的 builder

        } catch (Exception e) {

            throw new RuntimeException(e);

        }

    }

}

🔐 Base64 編碼內容

aW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLio7CgoKCnB1YmxpYyBjbGFzcyBYbWxGYWN0b3J5SG9sZGVyIHsKCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5IEZBQ1RPUlk7CgoKCiAgICBzdGF0aWMgewoKICAgICAgICBGQUNUT1JZID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOwoKICAgICAgICB0cnkgewoKICAgICAgICAgICAgLy8g5a6J5YWo6Kit5a6a77yI6ZiyIFhYRe+8iQoKICAgICAgICAgICAgRkFDVE9SWS5zZXRGZWF0dXJlKCJodHRwOi8vYXBhY2hlLm9yZy94bWwvZmVhdHVyZXMvZGlzYWxsb3ctZG9jdHlwZS1kZWNsIiwgdHJ1ZSk7CgogICAgICAgICAgICBGQUNUT1JZLnNldEZlYXR1cmUoImh0dHA6Ly94bWwub3JnL3NheC9mZWF0dXJlcy9leHRlcm5hbC1nZW5lcmFsLWVudGl0aWVzIiwgZmFsc2UpOwoKICAgICAgICAgICAgRkFDVE9SWS5zZXRGZWF0dXJlKCJodHRwOi8veG1sLm9yZy9zYXgvZmVhdHVyZXMvZXh0ZXJuYWwtcGFyYW1ldGVyLWVudGl0aWVzIiwgZmFsc2UpOwoKICAgICAgICAgICAgRkFDVE9SWS5zZXRYSW5jbHVkZUF3YXJlKGZhbHNlKTsKCiAgICAgICAgICAgIEZBQ1RPUlkuc2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlcyhmYWxzZSk7CgogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CgogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiWE1MIEZhY3RvcnkgaW5pdCBmYWlsZWQiLCBlKTsKCiAgICAgICAgfQoKICAgIH0KCgoKICAgIHB1YmxpYyBzdGF0aWMgRG9jdW1lbnRCdWlsZGVyIG5ld0J1aWxkZXIoKSB7CgogICAgICAgIHRyeSB7CgogICAgICAgICAgICByZXR1cm4gRkFDVE9SWS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsgLy8g5q+P5qyh6KaB5paw55qEIGJ1aWxkZXIKCiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKCiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUpOwoKICAgICAgICB9CgogICAgfQoKfQo=
返回列表 上一筆 下一筆