返回列表 上一筆 下一筆

📄 資料內容

import org.apache.axis.message.MessageElement;

import org.w3c.dom.*;

import java.util.*;



public List<KBAttachDTO> getKBAttachList(int ifqSid, String userType) throws Exception {

    List<KBAttachDTO> listOut = new ArrayList<>();



    IQKB_XMLSoapProxy service = new IQKB_XMLSoapProxy();

    // call the WS that returns attachments for a KB item (adjust API if different)

    WsGetKBAttachResponseWsGetKBAttachResult result =

            service.wsGetKBAttach(strValidCode, 1, channelMap.get(userType), ifqSid);



    MessageElement[] anyArr = result.get_any();



    // keep your original logging style

    LOGGER.info(vaildLog("### method:getKBAttachList, webservice:wsGetKBAttach"));

    LOGGER.info(vaildLog("### req:" + "wsGetKBAttach(" + strValidCode + ", 1, "

            + channelMap.get(userType) + ", " + ifqSid + ")"));

    LOGGER.info(vaildLog("### anyData:" + (anyArr != null && anyArr.length > 0 ? anyArr[0] : "null")));



    if (anyArr == null || anyArr.length == 0) return listOut;



    // 1) find <diffgram> (skip xs:schema)

    Element diffgram = null;

    for (MessageElement me : anyArr) {

        String ln = me.getLocalName();

        if ("diffgram".equalsIgnoreCase(ln)) { diffgram = me; break; }

    }

    if (diffgram == null) return listOut;



    // 2) enter <IQKB>

    Element dataRoot = firstChildElementByLocalName(diffgram, "IQKB");

    if (dataRoot == null) dataRoot = diffgram;



    // 3) each row is <KBAttach>

    NodeList rows = dataRoot.getElementsByTagName("KBAttach");

    if (rows == null || rows.getLength() == 0) return listOut;



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

        Element row = (Element) rows.item(i);



        KBAttachDTO dto = new KBAttachDTO();

        dto.ifaaSid = getChildText(row, "ifaa_sid");

        dto.source  = getChildText(row, "sfaa_source");

        dto.name    = getChildText(row, "sfaa_name"); // may contain entities like &lt;...&gt;

        dto.webFile = getChildText(row, "sWebFile");  // looks like "/Attach/1/current/5563.pptx"

        dto.size    = getChildText(row, "ifaa_size");



        // optional: HTML unescape if needed

        // dto.name = org.apache.commons.text.StringEscapeUtils.unescapeHtml4(dto.name);



        listOut.add(dto);

    }



    LOGGER.info("getKBAttachList: rows=" + rows.getLength() + ", mapped=" + listOut.size());

    return listOut;

}

🔐 Base64 編碼內容

aW1wb3J0IG9yZy5hcGFjaGUuYXhpcy5tZXNzYWdlLk1lc3NhZ2VFbGVtZW50OwoKaW1wb3J0IG9yZy53M2MuZG9tLio7CgppbXBvcnQgamF2YS51dGlsLio7CgoKCnB1YmxpYyBMaXN0PEtCQXR0YWNoRFRPPiBnZXRLQkF0dGFjaExpc3QoaW50IGlmcVNpZCwgU3RyaW5nIHVzZXJUeXBlKSB0aHJvd3MgRXhjZXB0aW9uIHsKCiAgICBMaXN0PEtCQXR0YWNoRFRPPiBsaXN0T3V0ID0gbmV3IEFycmF5TGlzdDw+KCk7CgoKCiAgICBJUUtCX1hNTFNvYXBQcm94eSBzZXJ2aWNlID0gbmV3IElRS0JfWE1MU29hcFByb3h5KCk7CgogICAgLy8gY2FsbCB0aGUgV1MgdGhhdCByZXR1cm5zIGF0dGFjaG1lbnRzIGZvciBhIEtCIGl0ZW0gKGFkanVzdCBBUEkgaWYgZGlmZmVyZW50KQoKICAgIFdzR2V0S0JBdHRhY2hSZXNwb25zZVdzR2V0S0JBdHRhY2hSZXN1bHQgcmVzdWx0ID0KCiAgICAgICAgICAgIHNlcnZpY2Uud3NHZXRLQkF0dGFjaChzdHJWYWxpZENvZGUsIDEsIGNoYW5uZWxNYXAuZ2V0KHVzZXJUeXBlKSwgaWZxU2lkKTsKCgoKICAgIE1lc3NhZ2VFbGVtZW50W10gYW55QXJyID0gcmVzdWx0LmdldF9hbnkoKTsKCgoKICAgIC8vIGtlZXAgeW91ciBvcmlnaW5hbCBsb2dnaW5nIHN0eWxlCgogICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyBtZXRob2Q6Z2V0S0JBdHRhY2hMaXN0LCB3ZWJzZXJ2aWNlOndzR2V0S0JBdHRhY2giKSk7CgogICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyByZXE6IiArICJ3c0dldEtCQXR0YWNoKCIgKyBzdHJWYWxpZENvZGUgKyAiLCAxLCAiCgogICAgICAgICAgICArIGNoYW5uZWxNYXAuZ2V0KHVzZXJUeXBlKSArICIsICIgKyBpZnFTaWQgKyAiKSIpKTsKCiAgICBMT0dHRVIuaW5mbyh2YWlsZExvZygiIyMjIGFueURhdGE6IiArIChhbnlBcnIgIT0gbnVsbCAmJiBhbnlBcnIubGVuZ3RoID4gMCA/IGFueUFyclswXSA6ICJudWxsIikpKTsKCgoKICAgIGlmIChhbnlBcnIgPT0gbnVsbCB8fCBhbnlBcnIubGVuZ3RoID09IDApIHJldHVybiBsaXN0T3V0OwoKCgogICAgLy8gMSkgZmluZCA8ZGlmZmdyYW0+IChza2lwIHhzOnNjaGVtYSkKCiAgICBFbGVtZW50IGRpZmZncmFtID0gbnVsbDsKCiAgICBmb3IgKE1lc3NhZ2VFbGVtZW50IG1lIDogYW55QXJyKSB7CgogICAgICAgIFN0cmluZyBsbiA9IG1lLmdldExvY2FsTmFtZSgpOwoKICAgICAgICBpZiAoImRpZmZncmFtIi5lcXVhbHNJZ25vcmVDYXNlKGxuKSkgeyBkaWZmZ3JhbSA9IG1lOyBicmVhazsgfQoKICAgIH0KCiAgICBpZiAoZGlmZmdyYW0gPT0gbnVsbCkgcmV0dXJuIGxpc3RPdXQ7CgoKCiAgICAvLyAyKSBlbnRlciA8SVFLQj4KCiAgICBFbGVtZW50IGRhdGFSb290ID0gZmlyc3RDaGlsZEVsZW1lbnRCeUxvY2FsTmFtZShkaWZmZ3JhbSwgIklRS0IiKTsKCiAgICBpZiAoZGF0YVJvb3QgPT0gbnVsbCkgZGF0YVJvb3QgPSBkaWZmZ3JhbTsKCgoKICAgIC8vIDMpIGVhY2ggcm93IGlzIDxLQkF0dGFjaD4KCiAgICBOb2RlTGlzdCByb3dzID0gZGF0YVJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIktCQXR0YWNoIik7CgogICAgaWYgKHJvd3MgPT0gbnVsbCB8fCByb3dzLmdldExlbmd0aCgpID09IDApIHJldHVybiBsaXN0T3V0OwoKCgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzLmdldExlbmd0aCgpOyBpKyspIHsKCiAgICAgICAgRWxlbWVudCByb3cgPSAoRWxlbWVudCkgcm93cy5pdGVtKGkpOwoKCgogICAgICAgIEtCQXR0YWNoRFRPIGR0byA9IG5ldyBLQkF0dGFjaERUTygpOwoKICAgICAgICBkdG8uaWZhYVNpZCA9IGdldENoaWxkVGV4dChyb3csICJpZmFhX3NpZCIpOwoKICAgICAgICBkdG8uc291cmNlICA9IGdldENoaWxkVGV4dChyb3csICJzZmFhX3NvdXJjZSIpOwoKICAgICAgICBkdG8ubmFtZSAgICA9IGdldENoaWxkVGV4dChyb3csICJzZmFhX25hbWUiKTsgLy8gbWF5IGNvbnRhaW4gZW50aXRpZXMgbGlrZSAmbHQ7Li4uJmd0OwoKICAgICAgICBkdG8ud2ViRmlsZSA9IGdldENoaWxkVGV4dChyb3csICJzV2ViRmlsZSIpOyAgLy8gbG9va3MgbGlrZSAiL0F0dGFjaC8xL2N1cnJlbnQvNTU2My5wcHR4IgoKICAgICAgICBkdG8uc2l6ZSAgICA9IGdldENoaWxkVGV4dChyb3csICJpZmFhX3NpemUiKTsKCgoKICAgICAgICAvLyBvcHRpb25hbDogSFRNTCB1bmVzY2FwZSBpZiBuZWVkZWQKCiAgICAgICAgLy8gZHRvLm5hbWUgPSBvcmcuYXBhY2hlLmNvbW1vbnMudGV4dC5TdHJpbmdFc2NhcGVVdGlscy51bmVzY2FwZUh0bWw0KGR0by5uYW1lKTsKCgoKICAgICAgICBsaXN0T3V0LmFkZChkdG8pOwoKICAgIH0KCgoKICAgIExPR0dFUi5pbmZvKCJnZXRLQkF0dGFjaExpc3Q6IHJvd3M9IiArIHJvd3MuZ2V0TGVuZ3RoKCkgKyAiLCBtYXBwZWQ9IiArIGxpc3RPdXQuc2l6ZSgpKTsKCiAgICByZXR1cm4gbGlzdE91dDsKCn0K
返回列表 上一筆 下一筆