<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 何楊 閱讀(1579) 評論(0)  編輯  收藏 所屬分類: WMB
    主站蜘蛛池模板: 亚洲色精品VR一区区三区 | 成人免费无码大片a毛片软件| 亚洲老妈激情一区二区三区| 国产天堂亚洲国产碰碰| 国产福利免费观看| 精品女同一区二区三区免费播放| 国内外成人免费视频| 亚洲国产精品久久久久秋霞小| 日韩成人在线免费视频| 亚洲av乱码中文一区二区三区| 国产性生交xxxxx免费| 青青草国产免费国产是公开| 久久精品国产亚洲7777| a级成人毛片免费图片| 亚洲国产精品国自产电影| 久久久久av无码免费网| 亚洲欧美日韩自偷自拍| 免费看男女下面日出水视频| 又黄又大的激情视频在线观看免费视频社区在线 | 四虎成人免费观看在线网址| 国产精品亚洲专区无码牛牛| 亚洲成片观看四虎永久| 成人性做爰aaa片免费看| 337p日本欧洲亚洲大胆艺术| 成年女人免费碰碰视频| 国产精品综合专区中文字幕免费播放 | 国产天堂亚洲国产碰碰| 亚洲人成无码网站| 免费h片在线观看网址最新| 亚洲AV第一成肉网| 亚洲人成色7777在线观看| 亚洲一区二区三区免费观看| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲精品视频免费观看| 亚洲视频免费一区| 色天使色婷婷在线影院亚洲| 久久精品视频亚洲| 在线观看免费精品国产| 国产拍拍拍无码视频免费| 成人区精品一区二区不卡亚洲| 中文字幕亚洲第一|