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()); }
/** * 根据经纬度、角度信息获取相近道路的最高道路等级 * * @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()); }
/** * 解析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; }
@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); }
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; }
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)); } }
@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; }
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; }
@Override public String getValue() { return internal.getStringValue(); }
/** * 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; }
/** * 查询商品明细 * * @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()); }