public void testWithMultiValueArrayAndDynamicAttributes() throws Exception {
    String dynamicAttribute1 = "attr1";
    String dynamicAttribute2 = "attr2";

    this.tag.setPath("stringArray");
    this.tag.setItems(new Object[] {"foo", "bar", "baz"});
    this.tag.setDynamicAttribute(null, dynamicAttribute1, dynamicAttribute1);
    this.tag.setDynamicAttribute(null, dynamicAttribute2, dynamicAttribute2);

    int result = this.tag.doStartTag();
    assertEquals(Tag.SKIP_BODY, result);

    String output = getOutput();

    // wrap the output so it is valid XML
    output = "<doc>" + output + "</doc>";
    SAXReader reader = new SAXReader();
    Document document = reader.read(new StringReader(output));
    Element spanElement1 = (Element) document.getRootElement().elements().get(0);
    Element checkboxElement1 = (Element) spanElement1.elements().get(0);
    assertEquals("input", checkboxElement1.getName());
    assertEquals("checkbox", checkboxElement1.attribute("type").getValue());
    assertEquals("stringArray", checkboxElement1.attribute("name").getValue());
    assertEquals("checked", checkboxElement1.attribute("checked").getValue());
    assertEquals("foo", checkboxElement1.attribute("value").getValue());
    assertEquals("foo", spanElement1.getStringValue());
    assertEquals(dynamicAttribute1, checkboxElement1.attribute(dynamicAttribute1).getValue());
    assertEquals(dynamicAttribute2, checkboxElement1.attribute(dynamicAttribute2).getValue());

    Element spanElement2 = (Element) document.getRootElement().elements().get(1);
    Element checkboxElement2 = (Element) spanElement2.elements().get(0);
    assertEquals("input", checkboxElement2.getName());
    assertEquals("checkbox", checkboxElement2.attribute("type").getValue());
    assertEquals("stringArray", checkboxElement2.attribute("name").getValue());
    assertEquals("checked", checkboxElement2.attribute("checked").getValue());
    assertEquals("bar", checkboxElement2.attribute("value").getValue());
    assertEquals("bar", spanElement2.getStringValue());
    assertEquals(dynamicAttribute1, checkboxElement2.attribute(dynamicAttribute1).getValue());
    assertEquals(dynamicAttribute2, checkboxElement2.attribute(dynamicAttribute2).getValue());

    Element spanElement3 = (Element) document.getRootElement().elements().get(2);
    Element checkboxElement3 = (Element) spanElement3.elements().get(0);
    assertEquals("input", checkboxElement3.getName());
    assertEquals("checkbox", checkboxElement3.attribute("type").getValue());
    assertEquals("stringArray", checkboxElement3.attribute("name").getValue());
    assertNull("not checked", checkboxElement3.attribute("checked"));
    assertEquals("baz", checkboxElement3.attribute("value").getValue());
    assertEquals("baz", spanElement3.getStringValue());
    assertEquals(dynamicAttribute1, checkboxElement3.attribute(dynamicAttribute1).getValue());
    assertEquals(dynamicAttribute2, checkboxElement3.attribute(dynamicAttribute2).getValue());
  }
  public void updateXMLbyId(String id, UpLoadFile pat) {
    String xmlStr = xml2String();
    Document document = null;
    try {
      document = DocumentHelper.parseText(xmlStr);
    } catch (DocumentException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    }
    Element rootElement = document.getRootElement();
    String rootStrV = rootElement.getStringValue();
    String rootStrT = rootElement.getText();
    List<Element> elements = rootElement.elements("file");

    for (Element ele : elements) {
      Element ide = ele.element("id");
      if (id.equalsIgnoreCase(ide.getTextTrim())) {
        Element nameElement = ele.element("name");
        Element crcElement = ele.element("crc");
        Element urlElement = ele.element("url");
        Element pathElement = ele.element("path");
        Element isUpElement = ele.element("isUpFastFDS");

        nameElement.setText(pat.getName());
        crcElement.setText(pat.getCrc());
        urlElement.setText(pat.getUrl());
        pathElement.setText(pat.getPath());
        isUpElement.setText(pat.getIsUpFastFDS());
      }
    }

    writeXML(file, document);
  }
  private List parseContentsFromXML(String qualifyerXML) {
    List contents = new ArrayList();

    try {
      Document document = new DOMBuilder().getDocument(qualifyerXML);

      String entity = document.getRootElement().attributeValue("entity");

      Map addedContents = new HashMap();

      List children = document.getRootElement().elements();
      Iterator i = children.iterator();
      while (i.hasNext()) {
        Element child = (Element) i.next();
        String id = child.getStringValue();
        String path = child.attributeValue("path");

        if (!addedContents.containsKey(id)) {
          ContentVO contentVO =
              ContentController.getContentController().getContentVOWithId(new Integer(id));
          contents.add(contentVO);
          addedContents.put(id, contentVO);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return contents;
  }
  @SuppressWarnings("unchecked")
  private List<SiteNodeVO> parseSiteNodesFromXML(String qualifyerXML) {
    List<SiteNodeVO> siteNodes = new ArrayList<SiteNodeVO>();

    try {
      Document document = new DOMBuilder().getDocument(qualifyerXML);
      String entity = document.getRootElement().attributeValue("entity");
      Map<String, SiteNodeVO> addedSiteNodes = new HashMap<String, SiteNodeVO>();

      List<Element> children = document.getRootElement().elements();
      Iterator<Element> i = children.iterator();
      while (i.hasNext()) {
        Element child = i.next();
        String id = child.getStringValue();

        if (!addedSiteNodes.containsKey(id)) {
          SiteNodeVO siteNodeVO =
              SiteNodeController.getController().getSiteNodeVOWithId(new Integer(id));
          siteNodeVO
              .getExtraProperties()
              .put("displayName", getLocalizedNameForSiteNode(siteNodeVO, sortLanguageId));
          siteNodes.add(siteNodeVO);
          addedSiteNodes.put(id, siteNodeVO);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return siteNodes;
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    SAXReader reader = new SAXReader();
    try {
      Document document = reader.read(new File("books.xml"));
      Element bookStore = document.getRootElement();

      Iterator it = bookStore.elementIterator();

      while (it.hasNext()) {
        Element book = (Element) it.next();
        List<org.dom4j.Attribute> bootAttrs = book.attributes();

        for (org.dom4j.Attribute attr : bootAttrs) {
          System.out.println("node name: " + attr.getName() + " - node value: " + attr.getValue());
        }
        Iterator itt = book.elementIterator();
        while (itt.hasNext()) {
          Element bookChild = (Element) itt.next();
          System.out.println(
              "sub node name: "
                  + bookChild.getName()
                  + " - sub node value: "
                  + bookChild.getStringValue());
        }
        System.out.println();
      }

    } catch (DocumentException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  /** Test case where items toString() doesn't fit the item ID */
  public void testCollectionOfItemPets() throws Exception {
    this.tag.setPath("someSet");
    List allPets = new ArrayList();
    allPets.add(new ItemPet("PET1"));
    allPets.add(new ItemPet("PET2"));
    allPets.add(new ItemPet("PET3"));
    this.tag.setItems(allPets);
    this.tag.setItemValue("name");
    this.tag.setItemLabel("label");

    int result = this.tag.doStartTag();
    assertEquals(Tag.SKIP_BODY, result);

    String output = getOutput();

    // wrap the output so it is valid XML
    output = "<doc>" + output + "</doc>";

    SAXReader reader = new SAXReader();
    Document document = reader.read(new StringReader(output));
    Element spanElement1 = (Element) document.getRootElement().elements().get(0);
    Element checkboxElement1 = (Element) spanElement1.elements().get(0);
    assertEquals("input", checkboxElement1.getName());
    assertEquals("checkbox", checkboxElement1.attribute("type").getValue());
    assertEquals("someSet", checkboxElement1.attribute("name").getValue());
    assertNotNull("should be checked", checkboxElement1.attribute("checked"));
    assertEquals("checked", checkboxElement1.attribute("checked").getValue());
    assertEquals("PET1", checkboxElement1.attribute("value").getValue());
    assertEquals("PET1", spanElement1.getStringValue());
    Element spanElement2 = (Element) document.getRootElement().elements().get(1);
    Element checkboxElement2 = (Element) spanElement2.elements().get(0);
    assertEquals("input", checkboxElement2.getName());
    assertEquals("checkbox", checkboxElement2.attribute("type").getValue());
    assertEquals("someSet", checkboxElement2.attribute("name").getValue());
    assertNotNull("should be checked", checkboxElement2.attribute("checked"));
    assertEquals("checked", checkboxElement2.attribute("checked").getValue());
    assertEquals("PET2", checkboxElement2.attribute("value").getValue());
    assertEquals("PET2", spanElement2.getStringValue());
    Element spanElement3 = (Element) document.getRootElement().elements().get(2);
    Element checkboxElement3 = (Element) spanElement3.elements().get(0);
    assertEquals("input", checkboxElement3.getName());
    assertEquals("checkbox", checkboxElement3.attribute("type").getValue());
    assertEquals("someSet", checkboxElement3.attribute("name").getValue());
    assertNull("not checked", checkboxElement3.attribute("checked"));
    assertEquals("PET3", checkboxElement3.attribute("value").getValue());
    assertEquals("PET3", spanElement3.getStringValue());
  }
Exemplo n.º 7
0
  /**
   * 根据经纬度、角度信息获取相近道路的最高道路等级
   *
   * @param lon 经度
   * @param lat 纬度
   * @param angle 方向
   * @return 管理等级 1:高速公路、2:国道、3:快速路、4:省道、5:主要道路、6:次要道路、7:一般道路、8:出入目的地道路、9:系道路、10:步行道路
   * @throws Exception
   */
  public static String getAddressNo(double lon, double lat, int angle) {
    logger.info("进入方法getAddressNo()");
    Document doc01 = null;
    try {
      doc01 = getRGCServiceRoadQuery(lon + "", lat + "", angle + ""); // 获取详细街道位置信息
      logger.info("doc01 = " + doc01);
      int lvl = 99;

      if (doc01.selectSingleNode("//result/@code") != null) {
        logger.info("doc01.selectSingleNode(\"//result/@code\")!=null");
        String code = doc01.selectSingleNode("//result/@code").getStringValue();
        logger.info("code = " + code);
        if (!"0".equals(code)) {
          logger.info("equals(code)");
          java.util.List ls = doc01.selectNodes("//result/roads/road/nr");
          logger.info("ls");
          if (ls != null && ls.size() > 0) {
            logger.info("ls!=null");
            for (int i = 0; i < ls.size(); i++) {
              Element element = (Element) ls.get(i);
              String nr = element.getStringValue();
              int tmpLvl = Integer.parseInt((nr == null || "".equals(nr)) ? "99" : nr.trim());
              if (tmpLvl < lvl) {
                lvl = tmpLvl;
              }
            }
          }
          if (lvl != 99) {
            logger.info("lvl!=99");
            return "" + lvl;
          } else {
            logger.debug("获取地理位置道路信息-接口没有返回道路等级:" + doc01.asXML());
            return null;
          }
        } else {
          logger.debug("获取地理位置道路信息-接口返回结果状态代码为" + code + ":" + doc01.asXML());
          return null;
        }
      } else {
        logger.debug("获取地理位置道路信息-接口返回非约定的XML格式:" + doc01.asXML());
        return null;
      }
    } catch (Exception e) {
      logger.info("------------------------------" + e.getMessage());
      logger.error(
          " 获取地理位置道路信息-接口异常,lon="
              + lon
              + ";lat="
              + lat
              + ";angle="
              + angle
              + ";return xml:"
              + doc01.asXML()
              + ";Exception:"
              + e.getMessage(),
          e);
      return null;
    }
  }
  public void testWithMultiValueMapWithDelimiter() throws Exception {
    String delimiter = " | ";
    this.tag.setDelimiter(delimiter);
    this.tag.setPath("stringArray");
    Map m = new LinkedHashMap();
    m.put("foo", "FOO");
    m.put("bar", "BAR");
    m.put("baz", "BAZ");
    this.tag.setItems(m);
    int result = this.tag.doStartTag();
    assertEquals(Tag.SKIP_BODY, result);

    String output = getOutput();

    // wrap the output so it is valid XML
    output = "<doc>" + output + "</doc>";

    SAXReader reader = new SAXReader();
    Document document = reader.read(new StringReader(output));
    Element spanElement1 = (Element) document.getRootElement().elements().get(0);
    Element checkboxElement1 = (Element) spanElement1.elements().get(0);
    assertEquals("input", checkboxElement1.getName());
    assertEquals("checkbox", checkboxElement1.attribute("type").getValue());
    assertEquals("stringArray", checkboxElement1.attribute("name").getValue());
    assertEquals("checked", checkboxElement1.attribute("checked").getValue());
    assertEquals("foo", checkboxElement1.attribute("value").getValue());
    assertEquals("FOO", spanElement1.getStringValue());
    Element spanElement2 = (Element) document.getRootElement().elements().get(1);
    Element checkboxElement2 = (Element) spanElement2.elements().get(0);
    assertEquals("input", checkboxElement2.getName());
    assertEquals("checkbox", checkboxElement2.attribute("type").getValue());
    assertEquals("stringArray", checkboxElement2.attribute("name").getValue());
    assertEquals("checked", checkboxElement2.attribute("checked").getValue());
    assertEquals("bar", checkboxElement2.attribute("value").getValue());
    assertEquals(delimiter + "BAR", spanElement2.getStringValue());
    Element spanElement3 = (Element) document.getRootElement().elements().get(2);
    Element checkboxElement3 = (Element) spanElement3.elements().get(0);
    assertEquals("input", checkboxElement3.getName());
    assertEquals("checkbox", checkboxElement3.attribute("type").getValue());
    assertEquals("stringArray", checkboxElement3.attribute("name").getValue());
    assertNull("not checked", checkboxElement3.attribute("checked"));
    assertEquals("baz", checkboxElement3.attribute("value").getValue());
    assertEquals(delimiter + "BAZ", spanElement3.getStringValue());
  }
  public void testWithPetItemsMap() throws Exception {
    this.tag.setPath("someSet");
    Map m = new LinkedHashMap();
    m.put(new ItemPet("PET1"), "PET1Label");
    m.put(new ItemPet("PET2"), "PET2Label");
    m.put(new ItemPet("PET3"), "PET3Label");
    this.tag.setItems(m);
    tag.setItemValue("name");
    int result = this.tag.doStartTag();
    assertEquals(Tag.SKIP_BODY, result);

    String output = getOutput();

    // wrap the output so it is valid XML
    output = "<doc>" + output + "</doc>";

    SAXReader reader = new SAXReader();
    Document document = reader.read(new StringReader(output));
    Element spanElement1 = (Element) document.getRootElement().elements().get(0);
    Element checkboxElement1 = (Element) spanElement1.elements().get(0);
    assertEquals("input", checkboxElement1.getName());
    assertEquals("checkbox", checkboxElement1.attribute("type").getValue());
    assertEquals("someSet", checkboxElement1.attribute("name").getValue());
    assertEquals("checked", checkboxElement1.attribute("checked").getValue());
    assertEquals("PET1", checkboxElement1.attribute("value").getValue());
    assertEquals("PET1Label", spanElement1.getStringValue());
    Element spanElement2 = (Element) document.getRootElement().elements().get(1);
    Element checkboxElement2 = (Element) spanElement2.elements().get(0);
    assertEquals("input", checkboxElement2.getName());
    assertEquals("checkbox", checkboxElement2.attribute("type").getValue());
    assertEquals("someSet", checkboxElement2.attribute("name").getValue());
    assertEquals("checked", checkboxElement2.attribute("checked").getValue());
    assertEquals("PET2", checkboxElement2.attribute("value").getValue());
    assertEquals("PET2Label", spanElement2.getStringValue());
    Element spanElement3 = (Element) document.getRootElement().elements().get(2);
    Element checkboxElement3 = (Element) spanElement3.elements().get(0);
    assertEquals("input", checkboxElement3.getName());
    assertEquals("checkbox", checkboxElement3.attribute("type").getValue());
    assertEquals("someSet", checkboxElement3.attribute("name").getValue());
    assertNull("not checked", checkboxElement3.attribute("checked"));
    assertEquals("PET3", checkboxElement3.attribute("value").getValue());
    assertEquals("PET3Label", spanElement3.getStringValue());
  }
Exemplo n.º 10
0
 /**
  * 解析strategys
  *
  * @param Element tagNode tag节点
  * @return Strategy
  */
 private Strategy parseStrategys(Element tagNode) {
   Strategy strategy = new Strategy();
   for (Iterator<?> item = tagNode.elementIterator(); item.hasNext(); ) {
     Element strategyNode = (Element) item.next();
     String name = strategyNode.getName();
     String value = strategyNode.getStringValue();
     strategy = (Strategy) this.callSetterMethodByNameAndValue(strategy, name, value);
   }
   return strategy;
 }
Exemplo n.º 11
0
  @SuppressWarnings("unchecked")
  public <E> List xmlToObject(Class<E> clazz, String name) {
    String xmlStr = xml2String();
    List<Object> ojbList = new ArrayList<Object>();
    try {
      Document document = DocumentHelper.parseText(xmlStr);
      Element rootElement = document.getRootElement();
      String rootStrV = rootElement.getStringValue();
      String rootStrT = rootElement.getText();
      List<Element> elements = rootElement.elements(name);
      for (Element nameElement : elements) {
        Field[] field = clazz.getDeclaredFields();
        Object rootObj = clazz.newInstance();

        if (nameElement != null) {
          /*
           * Class<?> cls =fiel.getType(); boolean bool
           * =cls.isAssignableFrom(List.class); if(bool){
           * ParameterizedType pt
           * =(ParameterizedType)fiel.getGenericType(); cls
           * =(Class<?>)pt.getActualTypeArguments()[0]; } if(bool){
           * List<Object> list=new ArrayList<Object>(); List<Element>
           * eleList=element.elements(); for (Element element2 :
           * eleList) { list.add(valueWrap(cls,element2)); } String
           * methodName="set"+upperFirst(fiel.getName());
           * if(containsMethod(clazz,methodName)){
           * clazz.getMethod(methodName, List.class).invoke(rootObj,
           * list); } }
           */
          rootObj = valueWrap(clazz, nameElement);
          /*
           * String methodName="set"+upperFirst(fiel.getName());
           * if(containsMethod(clazz,methodName)){
           * clazz.getMethod(methodName, clazz).invoke(rootObj, obj);
           *
           * }
           */

          ojbList.add((E) rootObj);
        }
      }
      return ojbList;
    } catch (DocumentException e) {
      logger.error("解析xml异常", e);
    } catch (Exception e) {
      logger.error("对象转换异常", e);
    }
    return null;
  }
  /**
   * Takes a xml element which defines the field an creates the target which is the object a
   * setValue method is provided for the direct mapping of values
   *
   * @param fieldElement
   * @return
   */
  private ITarget<IParameter> resolveField(Element fieldElement) {

    List<Element> methodElements = fieldElement.elements();
    String className = fieldElement.attributeValue("class");
    Object targetObject = ReflectionHelper.getObjectByClassName(className);

    for (Element element : methodElements) {
      String methodName = element.getName();
      String methodValue = element.getStringValue();

      ReflectionHelper.setStringValueByMethod(targetObject, methodName, methodValue);
    }

    return ITarget.class.cast(targetObject);
  }
Exemplo n.º 13
0
 private DocResult parseDoc(Element node, Node n) {
   Element doc = node.element("doc");
   DocResult docResult = null;
   if (doc != null) {
     String text = doc.getStringValue();
     if (StringUtils.isNotEmpty(text)) {
       docResult = DocParser.parse(text);
     }
   }
   if (docResult == null) {
     docResult = DocResult.NULL;
   }
   n.setDoc(docResult);
   return docResult;
 }
Exemplo n.º 14
0
  private void updateFileInfos(Document xml) {
    Element docFiles = xml.getRootElement();
    Element infosFiles = docFiles.element("files");

    @SuppressWarnings("unchecked")
    List<Element> fileList = infosFiles.elements("file");
    for (Element el : fileList) {
      String defaultAction = el.attributeValue("defaultAction");
      String language = el.attributeValue("language");
      if (language == null) {
        language = "";
      }
      String docName = el.getStringValue();
      setDocumentDefaultAction(docName, language, Integer.parseInt(defaultAction));
    }
  }
Exemplo n.º 15
0
 @Override
 public String exe(Element element, int position, List<RenderItem> items) {
   @SuppressWarnings("unchecked")
   List<AbstractNode> contentList = element.content();
   int i = 0;
   for (int cursor = 0; i < contentList.size(); ++i) {
     Object unit = contentList.get(i);
     if (unit instanceof Element) {
       Element subEle = (Element) unit;
       Resolver resolver = ResolverFactory.create(subEle.getName());
       String resolveResult = resolver.exe(subEle, position + cursor, items);
       contentList.set(i, new DefaultText(resolveResult));
     }
     cursor += ((DefaultText) contentList.get(i)).getText().length();
   }
   return element.getStringValue();
 }
 protected Object resolveXP(Element el, String xpr) {
   List<Object> nodes = el.selectNodes(xpr);
   if (nodes.size() == 1) {
     return nodes.get(0);
   } else if (nodes.size() > 1) {
     // Workaround for NXP-11834
     if (xpr.endsWith("text()")) {
       String value = "";
       for (Object node : nodes) {
         if (!(node instanceof DefaultText)) {
           String msg = "Text selector must return a string (expr:\"%s\") element %s";
           log.error(String.format(msg, xpr, el.getStringValue()));
           return value;
         }
         value += ((DefaultText) node).getText();
       }
       return new DefaultText(value);
     }
     return nodes;
   }
   return null;
 }
Exemplo n.º 17
0
  private boolean documentExistInPackageFile(String docName, String language, Document xml) {
    Element docFiles = xml.getRootElement();
    Element infosFiles = docFiles.element("files");

    @SuppressWarnings("unchecked")
    List<Element> fileList = infosFiles.elements("file");

    for (Element el : fileList) {
      String tmpDocName = el.getStringValue();
      if (tmpDocName.compareTo(docName) != 0) {
        continue;
      }
      String tmpLanguage = el.attributeValue("language");
      if (tmpLanguage == null) {
        tmpLanguage = "";
      }
      if (tmpLanguage.compareTo(language) == 0) {
        return true;
      }
    }

    return false;
  }
  /**
   * Builds a PolycomModel bean for the specified Model ID.
   *
   * <p>This method is not specific to Codec Options testing. It could be used generally for other
   * PolycomPhone testing. (Though are definitely some bean properties that are not being
   * populated.)
   *
   * @throws DocumentException
   */
  public static PolycomModel phoneModelBuilder(String phoneModelId, Class klass) throws Exception {

    PolycomModel model = new PolycomModel();
    model.setModelId(phoneModelId);

    Document beans_document = XmlUnitHelper.loadDocument(klass, "/sipxplugin.beans.xml");

    // Find the bean whose ID matches the specified phone model.
    // converting to xsd made xpath  foo/ not work, had to switch to */
    Node model_bean =
        beans_document.selectSingleNode(String.format("/beans/*[@id=\"%s\"]", phoneModelId));
    assertNotNull(String.format("Failed to find a bean with ID '%s'.", phoneModelId), model_bean);

    // Set the properties.
    model.setLabel(getModelBeanPropertyValue(model_bean, "label"));
    model.setMaxLineCount(Integer.parseInt(getModelBeanPropertyValue(model_bean, "maxLineCount")));
    Set<String> features = new HashSet<String>();
    for (Element supportedFeature : getModelBeanPropertyElements(model_bean, "supportedFeatures")) {
      features.add(supportedFeature.getStringValue());
    }
    model.setSupportedFeatures(features);

    return model;
  }
Exemplo n.º 19
0
 @Override
 public String getValue() {
   return internal.getStringValue();
 }
Exemplo n.º 20
0
  /**
   * Parse dataX job configuration file.
   *
   * @param filename Job configure filename.
   * @return a JobConf instance which describes this Job configuration file.
   */
  @SuppressWarnings("unchecked")
  public static JobConf loadJobConfig(String filename) {
    JobConf job = new JobConf();
    Document document;
    try {
      SAXReader reader = new SAXReader();
      document = reader.read(new File(filename));
      Element rootElement = document.getRootElement();
    } catch (DocumentException e) {
      LOG.error("DataX Can not find " + filename + " .");
      throw new DataExchangeException(e.getCause());
    } catch (Exception e) {
      LOG.error(String.format("DataX read config file %s failed .", filename));
      throw new DataExchangeException(e.getCause());
    }

    String xpath = "/jobs/job";
    Element jobE = (Element) document.selectSingleNode(xpath);
    job.setId(
        jobE.attributeValue("id") == null
            ? "DataX_is_still_a_virgin"
            : jobE.attributeValue("id").trim());

    JobPluginConf readerJobConf = new JobPluginConf();
    Element readerE = (Element) document.selectSingleNode(xpath + "/loader");
    if (null == readerE) readerE = (Element) document.selectSingleNode(xpath + "/reader");

    String readerId = readerE.attributeValue("id");
    readerJobConf.setId(readerId == null ? "virgin-reader" : readerId.trim());
    Element readerPluinE = (Element) readerE.selectSingleNode("plugin");
    readerJobConf.setName(
        readerPluinE.getStringValue().trim().replace("loader", "reader").toLowerCase());

    Map<String, String> readerParamMap = new HashMap<String, String>();

    /*
     * for historic reason, we need to check concurrency node first add by
     * bazhen.csy
     */
    if (readerE.selectSingleNode("concurrency") != null) {
      Element readerConcurrencyE = (Element) readerE.selectSingleNode("concurrency");
      readerParamMap.put(
          "concurrency", StrUtils.replaceString(readerConcurrencyE.attributeValue("core")));
    }

    List<Element> readerParamE = (List<Element>) readerE.selectNodes("param");
    for (Element e : readerParamE) {
      readerParamMap.put(
          e.attributeValue("key").toLowerCase(),
          StrUtils.replaceString(e.attributeValue("value").trim()));
    }

    PluginParam readerPluginParam = new DefaultPluginParam(readerParamMap);

    //		if (!readerPluginParam.hasValue("concurrency")
    //				|| readerPluginParam.getIntValue("concurrency", 1) < 0) {
    //			throw new IllegalArgumentException(
    //					"Reader option [concurrency] error !");
    //		}

    readerJobConf.setPluginParams(readerPluginParam);

    List<JobPluginConf> writerJobConfs = new ArrayList<JobPluginConf>();
    List<Element> writerEs = (List<Element>) document.selectNodes(xpath + "/dumper");
    if (null == writerEs || 0 == writerEs.size())
      writerEs = (List<Element>) document.selectNodes(xpath + "/writer");

    for (Element writerE : writerEs) {
      JobPluginConf writerPluginConf = new JobPluginConf();

      String writerId = writerE.attributeValue("id");
      writerPluginConf.setId(writerId == null ? "virgin-writer" : writerId.trim());

      String destructLimit = writerE.attributeValue("destructlimit");
      if (destructLimit != null) {
        writerPluginConf.setDestructLimit(Integer.valueOf(destructLimit));
      }

      Element writerPluginE = (Element) writerE.selectSingleNode("plugin");
      writerPluginConf.setName(
          writerPluginE.getStringValue().trim().replace("dumper", "writer").toLowerCase());

      Map<String, String> writerParamMap = new HashMap<String, String>();

      /*
       * for historic reason, we need to check concurrency node add by
       * bazhen.csy
       */
      if (writerE.selectSingleNode("concurrency") != null) {
        Element writerConcurrencyE = (Element) writerE.selectSingleNode("concurrency");
        writerParamMap.put(
            "concurrency", StrUtils.replaceString(writerConcurrencyE.attributeValue("core")));
      }

      List<Element> writerParamE = (List<Element>) writerE.selectNodes("param");
      for (Element e : writerParamE) {
        writerParamMap.put(
            e.attributeValue("key").toLowerCase(),
            StrUtils.replaceString(e.attributeValue("value").trim()));
      }

      PluginParam writerPluginParam = new DefaultPluginParam(writerParamMap);

      writerPluginConf.setPluginParams(writerPluginParam);
      writerJobConfs.add(writerPluginConf);
    }

    job.setReaderConf(readerJobConf);
    job.setWriterConfs(writerJobConfs);

    return job;
  }
Exemplo n.º 21
0
  /**
   * 查询商品明细
   *
   * @param xml
   * @return
   * @throws DocumentException
   */
  public static Item getItem(String xml) throws Exception {
    Item item = new Item();
    Document document = formatStr2Doc(xml);
    Element rootElt = document.getRootElement();
    Element element = rootElt.element("Item");
    item.setTitle(element.elementText("Title"));
    item.setCurrency(element.elementText("Currency"));
    item.setCountry(element.elementText("Country"));
    item.setSite(element.elementText("Site"));
    item.setPostalCode(element.elementText("PostalCode"));
    item.setLocation(element.elementText("Location"));
    item.setItemID(element.elementText("ItemID"));
    item.setHitCounter(element.elementText("HitCounter"));
    item.setAutoPay(element.elementText("AutoPay").equals("true") ? true : false);
    item.setGiftIcon(element.elementText("GiftIcon"));
    item.setListingDuration(element.elementText("ListingDuration"));
    item.setQuantity(Integer.parseInt(element.elementText("Quantity")));
    item.setPayPalEmailAddress(element.elementText("PayPalEmailAddress"));
    item.setGetItFast("false".equals(element.elementText("GetItFast")) ? false : true);
    item.setPrivateListing("true".equals(element.elementText("PrivateListing")) ? true : false);
    item.setDispatchTimeMax(Integer.parseInt(element.elementText("DispatchTimeMax")));
    item.setListingDuration(element.elementText("ListingDuration"));
    item.setDescription(element.elementText("Description"));
    item.setSKU(element.elementText("SKU"));
    item.setConditionID(
        Integer.parseInt(
            element.elementText("CategoryID") == null
                ? "1000"
                : element.elementText("CategoryID")));
    PrimaryCategory pc = new PrimaryCategory();
    pc.setCategoryID(element.element("PrimaryCategory").elementText("CategoryID"));

    item.setPrimaryCategory(pc);
    String listType = "";
    if ("FixedPriceItem".equals(element.elementText("ListingType"))) {
      if (element.element("Variations") != null) {
        listType = "2";
      } else {
        listType = element.elementText("ListingType");
      }
    } else {
      listType = element.elementText("ListingType");
    }
    item.setListingType(listType);
    // 自定义属性
    Element elspe = element.element("ItemSpecifics");
    if (elspe != null) {
      ItemSpecifics itemSpecifics = new ItemSpecifics();
      Iterator<Element> itnvl = elspe.elementIterator("NameValueList");
      List<NameValueList> linvl = new ArrayList<NameValueList>();
      while (itnvl.hasNext()) {
        Element nvl = itnvl.next();
        NameValueList nvli = new NameValueList();
        nvli.setName(nvl.elementText("Name"));
        List<String> listr = new ArrayList();
        Iterator<Element> itval = nvl.elementIterator("Value");
        while (itval.hasNext()) {
          listr.add(itval.next().getText());
        }
        nvli.setValue(listr);
        linvl.add(nvli);
      }
      itemSpecifics.setNameValueList(linvl);
    }
    // 图片信息
    Element pice = element.element("PictureDetails");
    if (pice != null) {
      PictureDetails pd = new PictureDetails();
      if (pice.elementText("GalleryType") != null) {
        pd.setGalleryType(pice.elementText("GalleryType"));
      }
      if (pice.elementText("PhotoDisplay") != null) {
        pd.setPhotoDisplay(pice.elementText("PhotoDisplay"));
      }
      if (pice.elementText("GalleryURL") != null) {
        String url = pice.elementText("GalleryURL");
        if (url.indexOf("?") > 0) {
          url.substring(0, url.indexOf("?"));
        }
        pd.setGalleryURL(url);
      }
      Iterator<Element> itpicurl = pice.elementIterator("PictureURL");
      List<String> urlli = new ArrayList();
      while (itpicurl.hasNext()) {
        Element url = itpicurl.next();
        String urlstr = url.getStringValue();
        if (urlstr.indexOf("?") > 0) {
          urlstr = urlstr.substring(0, urlstr.indexOf("?"));
        }
        urlli.add(urlstr);
      }
      pd.setPictureURL(urlli);
      item.setPictureDetails(pd);
    }
    // 取得退货政策并封装
    Element returne = element.element("ReturnPolicy");
    ReturnPolicy rp = new ReturnPolicy();
    rp.setRefundOption(returne.elementText("RefundOption"));
    rp.setReturnsWithinOption(returne.elementText("ReturnsWithinOption"));
    rp.setReturnsAcceptedOption(returne.elementText("ReturnsAcceptedOption"));
    rp.setDescription(returne.elementText("Description"));
    rp.setShippingCostPaidByOption(returne.elementText("ShippingCostPaidByOption"));
    item.setReturnPolicy(rp);
    // 买家要求
    BuyerRequirementDetails brd = new BuyerRequirementDetails();
    MaximumItemRequirements mirs = new MaximumItemRequirements();
    Element buyere = element.element("BuyerRequirementDetails");
    if (buyere != null) {
      Element maxiteme = buyere.element("MaximumItemRequirements");
      if (maxiteme != null) {
        if (maxiteme.elementText("MaximumItemCount") != null) {
          mirs.setMaximumItemCount(Integer.parseInt(maxiteme.elementText("MaximumItemCount")));
        }
        if (maxiteme.elementText("MinimumFeedbackScore") != null) {
          mirs.setMinimumFeedbackScore(
              Integer.parseInt(maxiteme.elementText("MinimumFeedbackScore")));
        }
        brd.setMaximumItemRequirements(mirs);
      }

      Element maxUnpaid = buyere.element("MaximumUnpaidItemStrikesInfo");
      if (maxUnpaid != null) {
        MaximumUnpaidItemStrikesInfo muis = new MaximumUnpaidItemStrikesInfo();
        String count = maxUnpaid.elementText("Count");
        muis.setCount(Integer.parseInt(count));
        muis.setPeriod(maxUnpaid.elementText("Period"));
        brd.setMaximumUnpaidItemStrikesInfo(muis);
      }

      Element maxPolicy = buyere.element("MaximumBuyerPolicyViolations");
      if (maxPolicy != null) {
        MaximumBuyerPolicyViolations mbpv = new MaximumBuyerPolicyViolations();
        mbpv.setCount(Integer.parseInt(maxPolicy.elementText("Count")));
        mbpv.setPeriod(maxPolicy.elementText("Period"));
        brd.setMaximumBuyerPolicyViolations(mbpv);
      }
      if (buyere.elementText("LinkedPayPalAccount") != null) {
        brd.setLinkedPayPalAccount(
            buyere.elementText("LinkedPayPalAccount").equals("true") ? true : false);
      }
      if (buyere.elementText("ShipToRegistrationCountry") != null) {
        brd.setShipToRegistrationCountry(
            buyere.elementText("ShipToRegistrationCountry").equals("true") ? true : false);
      }
      item.setBuyerRequirementDetails(brd);
    }
    // 运输选项
    ShippingDetails sd = new ShippingDetails();
    Element elsd = element.element("ShippingDetails");
    Iterator<Element> itershipping = elsd.elementIterator("ShippingServiceOptions");
    List<ShippingServiceOptions> lisso = new ArrayList();
    // 国内运输
    while (itershipping.hasNext()) {
      Element shipping = itershipping.next();
      ShippingServiceOptions sso = new ShippingServiceOptions();
      sso.setShippingService(shipping.elementText("ShippingService"));
      if (shipping.elementText("ShippingServiceCost") != null) {
        sso.setShippingServiceCost(
            new ShippingServiceCost(
                shipping.attributeValue("currencyID"),
                Double.parseDouble(shipping.elementText("ShippingServiceCost"))));
      }
      sso.setShippingServicePriority(
          Integer.parseInt(shipping.elementText("ShippingServicePriority")));
      if (shipping.elementText("FreeShipping") != null) {
        sso.setFreeShipping(shipping.elementText("FreeShipping").equals("true") ? true : false);
      }
      ShippingServiceAdditionalCost ssac = new ShippingServiceAdditionalCost();
      ssac.setValue(
          Double.parseDouble(
              shipping.elementText("ShippingServiceAdditionalCost") != null
                  ? shipping.elementText("ShippingServiceAdditionalCost")
                  : "0"));
      sso.setShippingServiceAdditionalCost(ssac);
      ShippingSurcharge ss = new ShippingSurcharge();
      ss.setValue(
          Double.parseDouble(
              shipping.elementText("ShippingSurcharge") != null
                  ? shipping.elementText("ShippingSurcharge")
                  : "0"));
      sso.setShippingSurcharge(ss);
      lisso.add(sso);
    }
    if (lisso.size() > 0) {
      sd.setShippingServiceOptions(lisso);
    }
    // 不运送到的国家
    Iterator<Element> excEl = elsd.elementIterator("ExcludeShipToLocation");
    List<String> liex = new ArrayList<String>();
    while (excEl.hasNext()) {
      Element els = excEl.next();
      liex.add(els.getText());
    }
    if (liex.size() > 0) {
      sd.setExcludeShipToLocation(liex);
    }
    // 国际运输
    Iterator<Element> iteInt = elsd.elementIterator("InternationalShippingServiceOption");
    List<InternationalShippingServiceOption> liint =
        new ArrayList<InternationalShippingServiceOption>();
    while (iteInt.hasNext()) {
      Element intel = iteInt.next();
      InternationalShippingServiceOption isso = new InternationalShippingServiceOption();
      isso.setShippingService(intel.elementText("ShippingService"));
      isso.setShippingServiceCost(
          new ShippingServiceCost(
              intel.attributeValue("currencyID"),
              Double.parseDouble(intel.elementText("ShippingServiceCost"))));
      Iterator<Element> iteto = intel.elementIterator("ShipToLocation");
      List<String> listr = new ArrayList();
      while (iteto.hasNext()) {
        listr.add(iteto.next().getText());
      }
      isso.setShipToLocation(listr);
      isso.setShippingServicePriority(
          Integer.parseInt(intel.elementText("ShippingServicePriority")));

      ShippingServiceAdditionalCost ssac = new ShippingServiceAdditionalCost();
      ssac.setValue(
          Double.parseDouble(
              intel.elementText("ShippingServiceAdditionalCost") != null
                  ? intel.elementText("ShippingServiceAdditionalCost")
                  : "0"));
      isso.setShippingServiceAdditionalCost(ssac);
      liint.add(isso);
    }
    if (liint.size() > 0) {
      sd.setInternationalShippingServiceOption(liint);
    }
    // 计算所需的长宽高
    Element re = elsd.element("CalculatedShippingRate");
    if (re != null) {
      CalculatedShippingRate csr = new CalculatedShippingRate();
      if (re.elementText("InternationalPackagingHandlingCosts") != null) {
        csr.setPackagingHandlingCosts(
            new PackagingHandlingCosts(
                re.attributeValue("currencyID"),
                Double.parseDouble(re.elementText("InternationalPackagingHandlingCosts"))));
      }
      if (re.elementText("OriginatingPostalCode") != null) {
        csr.setOriginatingPostalCode(re.elementText("OriginatingPostalCode"));
      }
      if (re.elementText("PackageDepth") != null) {
        csr.setPackageDepth(Double.parseDouble(re.elementText("PackageDepth")));
      }
      if (re.elementText("PackageLength") != null) {
        csr.setPackageLength(Double.parseDouble(re.elementText("PackageLength")));
      }
      if (re.elementText("PackageWidth") != null) {
        csr.setPackageWidth(Double.parseDouble(re.elementText("PackageWidth")));
      }
      if (re.elementText("ShippingIrregular") != null) {
        csr.setShippingIrregular(Boolean.parseBoolean(re.elementText("ShippingIrregular")));
      }
      if (re.elementText("ShippingPackage") != null) {
        csr.setShippingPackage(re.elementText("ShippingPackage"));
      }
      if (re.elementText("WeightMajor") != null) {
        csr.setWeightMajor(Double.parseDouble(re.elementText("WeightMajor")));
      }
      if (re.elementText("WeightMinor") != null) {
        csr.setWeightMinor(Double.parseDouble(re.elementText("WeightMinor")));
      }
      sd.setCalculatedShippingRate(csr);
    }
    sd.setShippingType(elsd.elementText("ShippingType"));
    item.setShippingDetails(sd);
    // 卖家信息
    Seller seller = new Seller();
    Element elsel = element.element("Seller");
    seller.setUserID(elsel.elementText("UserID"));
    seller.setEmail(elsel.elementText("Email"));
    item.setSeller(seller);
    // 多属性
    Element vartions = element.element("Variations");
    if (vartions != null) {
      Iterator<Element> elvar = vartions.elementIterator("Variation");
      List<Variation> livar = new ArrayList();
      while (elvar.hasNext()) {
        Element ele = elvar.next();
        Variation var = new Variation();
        var.setSKU(ele.elementText("SKU"));
        var.setQuantity(
            Integer.parseInt(ele.elementText("Quantity"))
                - Integer.parseInt(ele.element("SellingStatus").elementText("QuantitySold")));
        var.setStartPrice(
            new StartPrice(
                ele.attributeValue("currencyID"),
                Double.parseDouble(ele.elementText("StartPrice"))));
        Element elvs = ele.element("VariationSpecifics");
        Iterator<Element> elnvl = elvs.elementIterator("NameValueList");
        List<NameValueList> linvl = new ArrayList();
        while (elnvl.hasNext()) {
          Element elment = elnvl.next();
          NameValueList nvl = new NameValueList();
          nvl.setName(elment.elementText("Name"));
          List<String> li = new ArrayList<String>();
          li.add(elment.elementText("Value"));
          nvl.setValue(li);
          linvl.add(nvl);
        }
        List<VariationSpecifics> livs = new ArrayList();
        VariationSpecifics vs = new VariationSpecifics();
        vs.setNameValueList(linvl);
        livs.add(vs);
        var.setVariationSpecifics(livs);
        livar.add(var);
      }
      Variations vtions = new Variations();
      vtions.setVariation(livar);
      // 多属性值
      Element elvss = vartions.element("VariationSpecificsSet");
      Iterator<Element> itele = elvss.elementIterator("NameValueList");
      List<NameValueList> linvl = new ArrayList();
      while (itele.hasNext()) {
        Element nvlel = itele.next();
        NameValueList nvl = new NameValueList();
        nvl.setName(nvlel.elementText("Name"));
        Iterator<Element> itvalue = nvlel.elementIterator("Value");
        List<String> livalue = new ArrayList();
        while (itvalue.hasNext()) {
          Element value = itvalue.next();
          livalue.add(value.getText());
        }
        nvl.setValue(livalue);
        linvl.add(nvl);
      }
      VariationSpecificsSet vss = new VariationSpecificsSet();
      vss.setNameValueList(linvl);
      vtions.setVariationSpecificsSet(vss);
      // 多属性图片信息
      Pictures pic = new Pictures();
      Element elpic = vartions.element("Pictures");
      pic.setVariationSpecificName(elpic.elementText("VariationSpecificName"));
      Iterator<Element> iturl = elpic.elementIterator("VariationSpecificPictureSet");
      List<VariationSpecificPictureSet> livsps = new ArrayList();
      while (iturl.hasNext()) {
        Element urle = iturl.next();
        VariationSpecificPictureSet vsps = new VariationSpecificPictureSet();
        vsps.setVariationSpecificValue(urle.elementText("VariationSpecificValue"));
        Iterator<Element> url = urle.elementIterator("PictureURL");
        List li = new ArrayList();
        while (url.hasNext()) {
          Element e = url.next();
          String urlstr = e.getText();
          if (urlstr.indexOf("?") > 0) {
            urlstr = urlstr.substring(0, urlstr.indexOf("?"));
          }
          li.add(urlstr);
        }
        vsps.setPictureURL(li);
        livsps.add(vsps);
      }
      pic.setVariationSpecificPictureSet(livsps);
      vtions.setPictures(pic);

      item.setVariations(vtions);
    } else {
      Element el = element.element("StartPrice");
      item.setStartPrice(
          new StartPrice(el.attributeValue("currencyID"), Double.parseDouble(el.getText())));
      if (element.element("BuyItNowPrice") != null) {
        item.setBuyItNowPrice(Double.parseDouble(element.elementText("BuyItNowPrice")));
      }
      if (element.element("ReservePrice") != null) {
        item.setReservePrice(Double.parseDouble(element.elementText("ReservePrice")));
      }
    }
    return item;
  }
  public void testCollectionOfPetsWithEditor() throws Exception {
    this.tag.setPath("pets");
    List allPets = new ArrayList();
    allPets.add(new ItemPet("Rudiger"));
    allPets.add(new ItemPet("Spot"));
    allPets.add(new ItemPet("Checkers"));
    allPets.add(new ItemPet("Fluffy"));
    allPets.add(new ItemPet("Mufty"));
    this.tag.setItems(allPets);
    this.tag.setItemLabel("label");
    this.tag.setId("myId");

    BeanPropertyBindingResult bindingResult =
        new BeanPropertyBindingResult(this.bean, COMMAND_NAME);
    PropertyEditorSupport editor = new ItemPet.CustomEditor();
    bindingResult.getPropertyEditorRegistry().registerCustomEditor(ItemPet.class, editor);
    getPageContext()
        .getRequest()
        .setAttribute(BindingResult.MODEL_KEY_PREFIX + COMMAND_NAME, bindingResult);

    int result = this.tag.doStartTag();
    assertEquals(Tag.SKIP_BODY, result);

    String output = getOutput();

    // wrap the output so it is valid XML
    output = "<doc>" + output + "</doc>";

    SAXReader reader = new SAXReader();
    Document document = reader.read(new StringReader(output));
    Element spanElement1 = (Element) document.getRootElement().elements().get(0);
    Element checkboxElement1 = (Element) spanElement1.elements().get(0);
    assertEquals("input", checkboxElement1.getName());
    assertEquals("checkbox", checkboxElement1.attribute("type").getValue());
    assertEquals("pets", checkboxElement1.attribute("name").getValue());
    assertEquals("checked", checkboxElement1.attribute("checked").getValue());
    assertEquals("Rudiger", checkboxElement1.attribute("value").getValue());
    assertEquals("RUDIGER", spanElement1.getStringValue());
    Element spanElement2 = (Element) document.getRootElement().elements().get(1);
    Element checkboxElement2 = (Element) spanElement2.elements().get(0);
    assertEquals("input", checkboxElement2.getName());
    assertEquals("checkbox", checkboxElement2.attribute("type").getValue());
    assertEquals("pets", checkboxElement2.attribute("name").getValue());
    assertEquals("checked", checkboxElement2.attribute("checked").getValue());
    assertEquals("Spot", checkboxElement2.attribute("value").getValue());
    assertEquals("SPOT", spanElement2.getStringValue());
    Element spanElement3 = (Element) document.getRootElement().elements().get(2);
    Element checkboxElement3 = (Element) spanElement3.elements().get(0);
    assertEquals("input", checkboxElement3.getName());
    assertEquals("checkbox", checkboxElement3.attribute("type").getValue());
    assertEquals("pets", checkboxElement3.attribute("name").getValue());
    assertNull("not checked", checkboxElement3.attribute("checked"));
    assertEquals("Checkers", checkboxElement3.attribute("value").getValue());
    assertEquals("CHECKERS", spanElement3.getStringValue());
    Element spanElement4 = (Element) document.getRootElement().elements().get(3);
    Element checkboxElement4 = (Element) spanElement4.elements().get(0);
    assertEquals("input", checkboxElement4.getName());
    assertEquals("checkbox", checkboxElement4.attribute("type").getValue());
    assertEquals("pets", checkboxElement4.attribute("name").getValue());
    assertEquals("checked", checkboxElement4.attribute("checked").getValue());
    assertEquals("Fluffy", checkboxElement4.attribute("value").getValue());
    assertEquals("FLUFFY", spanElement4.getStringValue());
    Element spanElement5 = (Element) document.getRootElement().elements().get(4);
    Element checkboxElement5 = (Element) spanElement5.elements().get(0);
    assertEquals("input", checkboxElement5.getName());
    assertEquals("checkbox", checkboxElement5.attribute("type").getValue());
    assertEquals("pets", checkboxElement5.attribute("name").getValue());
    assertEquals("checked", checkboxElement5.attribute("checked").getValue());
    assertEquals("Mufty", checkboxElement5.attribute("value").getValue());
    assertEquals("MUFTY", spanElement5.getStringValue());
  }
  public void testCollectionOfPets() throws Exception {
    this.tag.setPath("pets");
    List allPets = new ArrayList();
    allPets.add(new ItemPet("Rudiger"));
    allPets.add(new ItemPet("Spot"));
    allPets.add(new ItemPet("Checkers"));
    allPets.add(new ItemPet("Fluffy"));
    allPets.add(new ItemPet("Mufty"));
    this.tag.setItems(allPets);
    this.tag.setItemValue("name");
    this.tag.setItemLabel("label");

    int result = this.tag.doStartTag();
    assertEquals(Tag.SKIP_BODY, result);

    String output = getOutput();

    // wrap the output so it is valid XML
    output = "<doc>" + output + "</doc>";

    SAXReader reader = new SAXReader();
    Document document = reader.read(new StringReader(output));
    Element spanElement1 = (Element) document.getRootElement().elements().get(0);
    Element checkboxElement1 = (Element) spanElement1.elements().get(0);
    assertEquals("input", checkboxElement1.getName());
    assertEquals("checkbox", checkboxElement1.attribute("type").getValue());
    assertEquals("pets", checkboxElement1.attribute("name").getValue());
    assertEquals("checked", checkboxElement1.attribute("checked").getValue());
    assertEquals("Rudiger", checkboxElement1.attribute("value").getValue());
    assertEquals("RUDIGER", spanElement1.getStringValue());
    Element spanElement2 = (Element) document.getRootElement().elements().get(1);
    Element checkboxElement2 = (Element) spanElement2.elements().get(0);
    assertEquals("input", checkboxElement2.getName());
    assertEquals("checkbox", checkboxElement2.attribute("type").getValue());
    assertEquals("pets", checkboxElement2.attribute("name").getValue());
    assertEquals("checked", checkboxElement2.attribute("checked").getValue());
    assertEquals("Spot", checkboxElement2.attribute("value").getValue());
    assertEquals("SPOT", spanElement2.getStringValue());
    Element spanElement3 = (Element) document.getRootElement().elements().get(2);
    Element checkboxElement3 = (Element) spanElement3.elements().get(0);
    assertEquals("input", checkboxElement3.getName());
    assertEquals("checkbox", checkboxElement3.attribute("type").getValue());
    assertEquals("pets", checkboxElement3.attribute("name").getValue());
    assertNull("not checked", checkboxElement3.attribute("checked"));
    assertEquals("Checkers", checkboxElement3.attribute("value").getValue());
    assertEquals("CHECKERS", spanElement3.getStringValue());
    Element spanElement4 = (Element) document.getRootElement().elements().get(3);
    Element checkboxElement4 = (Element) spanElement4.elements().get(0);
    assertEquals("input", checkboxElement4.getName());
    assertEquals("checkbox", checkboxElement4.attribute("type").getValue());
    assertEquals("pets", checkboxElement4.attribute("name").getValue());
    assertEquals("checked", checkboxElement4.attribute("checked").getValue());
    assertEquals("Fluffy", checkboxElement4.attribute("value").getValue());
    assertEquals("FLUFFY", spanElement4.getStringValue());
    Element spanElement5 = (Element) document.getRootElement().elements().get(4);
    Element checkboxElement5 = (Element) spanElement5.elements().get(0);
    assertEquals("input", checkboxElement5.getName());
    assertEquals("checkbox", checkboxElement5.attribute("type").getValue());
    assertEquals("pets", checkboxElement5.attribute("name").getValue());
    assertEquals("checked", checkboxElement5.attribute("checked").getValue());
    assertEquals("Mufty", checkboxElement5.attribute("value").getValue());
    assertEquals("MUFTY", spanElement5.getStringValue());
  }