<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
    代碼:
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    import java.util.regex.Pattern;

    import com.ibm.broker.javacompute.MbJavaComputeNode;
    import com.ibm.broker.plugin.MbElement;
    import com.ibm.broker.plugin.MbException;
    import com.ibm.broker.plugin.MbMessage;
    import com.ibm.broker.plugin.MbMessageAssembly;
    import com.ibm.broker.plugin.MbOutputTerminal;


    public class subflow_JavaCompute extends MbJavaComputeNode {

        
    public void evaluate(MbMessageAssembly inAssembly) throws MbException {
            MbOutputTerminal out 
    = getOutputTerminal("out");
            MbOutputTerminal alt 
    = getOutputTerminal("alternate");

            MbMessage inMessage 
    = inAssembly.getMessage();
            MbMessage outMessage 
    = new MbMessage(inMessage);
            MbMessageAssembly outAssembly
    =new MbMessageAssembly(inAssembly,outMessage);
            
            MbElement document
    =outMessage.getRootElement();
            MbElement root
    =document.getLastChild().getFirstChild();

            
    try{
                Set
    <String> selfDefNSSet=new HashSet<String>();// 用來存儲自定義的名稱空間名
                traverseAndRemoveNils(root,selfDefNSSet);// 遍歷節點刪除特定屬性
                
                
    if(selfDefNSSet.size()>0){
                    traverseAndRemoveSelfDefNSNode(root,selfDefNSSet);// 遍歷節點刪除自定義名稱空間節點
                }
            }
            
    catch(Exception ex){
                ex.printStackTrace();
            }
            
            out.propagate(outAssembly);
        }

        
        
    private void traverseAndRemoveNils(MbElement elm,Set<String> selfDefNSSet) throws Exception{
            
    // get all the attributes of current element
            List <MbElement> attrSet = (List <MbElement>)elm.evaluateXPath("@*"); 
            
    for(MbElement attr:attrSet){
                String name
    =attr.getName().toString();
                String value
    =attr.getValue().toString();
                
                
    if(isNillAttr(name,value)){
                    attr.detach();
                }
                
                
    if(isSelfDefNS(name,value)){
                    String[] arr
    =name.split(":");
                    selfDefNSSet.add(arr[
    1]);
                    attr.detach();
                }
            }
            
            
    // get all sub elements of current element
            List <MbElement> nodeset = (List <MbElement>)elm.evaluateXPath("*"); 
            
    for(MbElement childElm:nodeset){
                
    // recursion
                traverseAndRemoveNils(childElm,selfDefNSSet);
            }
        }
        
        // 判斷是否特定屬性,a:nil,b:nil都算
        
    private boolean isNillAttr(String name,String value){
            String patternStr
    ="(\\w+)(:nil)";
              
            
    boolean result1 = Pattern.matches(patternStr, name);
            
    boolean result2="true".equals(value);
            
            
    return result1&&result2;
        }
        // 判斷是否自定義名稱空間
        
    private boolean isSelfDefNS(String name,String value){
            String patternStr
    ="(xmlns:)(\\w+)";
              
            
    boolean result = Pattern.matches(patternStr, name);
            
            
    return result;
        }
       
        
    private void traverseAndRemoveSelfDefNSNode(MbElement elm,Set<String> selfDefNSSet) throws Exception{
            String name
    =elm.getName().toString();
            
            
    if(isSelfDefNSNode(name,selfDefNSSet)){
                elm.detach();
            }
            
            
    // get all sub elements of current element
            List <MbElement> nodeset = (List <MbElement>)elm.evaluateXPath("*"); 
            
    for(MbElement childElm:nodeset){
                
    // recursion
                traverseAndRemoveSelfDefNSNode(childElm,selfDefNSSet);
            }
        }
        // 判讀節點是否自定義名稱空間的限定名
        
    private boolean isSelfDefNSNode(String name,Set<String> selfDefNSSet){
            String[] arr
    =name.split(":");
            
            
    if(arr.length==2){
                String ns
    =arr[0];
                
                
    return selfDefNSSet.contains(ns);
            }
    else{
                
    return false;
            }
        }
    }

    輸入:
    <contactInfo xmlns:ns1="http://tbccorp.com/Services/CustomerMgt/v1/"><homePhoneNumber as:b="c"><key xsi:nil="true"/><value></value></homePhoneNumber><workPhoneNumber><ns1:a>1644</ns1:a><key xsi:nil="true"/><value ns1:nil="true">5</value></workPhoneNumber><ns1:b>1949</ns1:b><mobilePhoneNumber xmlns:ns1="http://tbccorp.com/Services/CustomerMgt/v1/"><key xsi:nil="true"/><value>3159867097</value></mobilePhoneNumber></contactInfo>

    輸出:
    <contactInfo><homePhoneNumber as:b="c"><key/><value/></homePhoneNumber><workPhoneNumber><key/><value>5</value></workPhoneNumber><mobilePhoneNumber><key/><value>3159867097</value></mobilePhoneNumber></contactInfo>
    posted on 2011-12-09 23:40 何楊 閱讀(1581) 評論(0)  編輯  收藏 所屬分類: WMB
    主站蜘蛛池模板: 在线观看www日本免费网站| 国产成人精品免费视频大全五级| 亚洲噜噜噜噜噜影院在线播放| 在线精品免费视频| 亚洲免费在线观看| 亚洲成a人不卡在线观看| 四虎影视永久免费观看网址| 国产午夜无码精品免费看动漫| 33333在线亚洲| 9i9精品国产免费久久| 亚洲日韩乱码中文无码蜜桃| 免费一级毛片免费播放| 久久精品成人免费观看| 久久精品国产亚洲AV电影网| 亚洲AV日韩AV永久无码免下载| 在线精品免费视频无码的| 人人玩人人添人人澡免费| 日本亚洲中午字幕乱码| 久久久久久亚洲精品成人| 亚洲国产成人久久综合一区77| 在线看片v免费观看视频777| 一级做a爱过程免费视| 亚洲砖码砖专无区2023| 久久亚洲国产精品五月天| 免费一级毛片在播放视频| 57PAO成人国产永久免费视频 | 免费国产草莓视频在线观看黄| 亚洲午夜免费视频| 中文字幕无码精品亚洲资源网| 毛片视频免费观看| 无码成A毛片免费| a毛片成人免费全部播放| 亚洲精品永久在线观看| 亚洲性69影院在线观看| 久久精品亚洲视频| 久久久久国产成人精品亚洲午夜 | 亚洲AV无码成人精品区在线观看 | **一级毛片免费完整视| 两个人www免费高清视频| 高h视频在线免费观看| 亚洲一日韩欧美中文字幕在线|