<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 何楊 閱讀(1585) 評論(0)  編輯  收藏 所屬分類: WMB
    主站蜘蛛池模板: 亚洲欧洲日产国码久在线| 亚洲第一精品电影网| 国产精品亚洲专区无码不卡| 性盈盈影院免费视频观看在线一区| 亚洲精品一卡2卡3卡三卡四卡| 日韩内射激情视频在线播放免费| 无码专区—VA亚洲V天堂| 国产成人AV片无码免费| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲中文字幕久久精品蜜桃| 嘿嘿嘿视频免费网站在线观看| 91亚洲国产在人线播放午夜| 亚洲成人免费网站| 亚洲av片不卡无码久久| 成人五级毛片免费播放| 亚洲av无码偷拍在线观看| 亚洲国产成人VA在线观看| 精精国产www视频在线观看免费| 亚洲午夜久久久影院| 色www永久免费网站| 一区二区三区亚洲| 国拍在线精品视频免费观看| 亚洲av无码av在线播放| 亚洲综合最新无码专区| 男人j进入女人j内部免费网站| 亚洲国产精品久久人人爱| 好男人视频社区精品免费| 日韩精品视频在线观看免费| 国产亚洲精品自在久久| 久久w5ww成w人免费| 亚洲精华液一二三产区| 亚洲中文字幕无码专区| 国产成人精品一区二区三区免费| 亚洲综合成人婷婷五月网址| 亚洲精品视频在线看| 久久一区二区三区免费播放| 欧洲 亚洲 国产图片综合| 久久亚洲国产成人影院网站| 57pao一国产成视频永久免费| 国产青草亚洲香蕉精品久久| 亚洲AV无码久久精品狠狠爱浪潮|