com.opensymphony.xwork2.config.providers.XmlHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xwork Show documentation
Show all versions of xwork Show documentation
XWork is an command-pattern framework that is used to power WebWork
as well as other applications. XWork provides an Inversion of Control
container, a powerful expression language, data type conversion,
validation, and pluggable configuration.
The newest version!
/*
* Copyright (c) 2002-2006 by OpenSymphony
* All rights reserved.
*/
package com.opensymphony.xwork2.config.providers;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Document;
import org.apache.commons.lang.StringUtils;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* XML utilities.
*
* @author Mike
*/
public class XmlHelper {
/**
* This method will find all the parameters under this paramsElement
and return them as
* Map. For example,
*
*
* value1
* value2
* value3
*
*
* will returns a Map with the following key, value pairs :-
*
* - param1 - value1
* - param2 - value2
* - param3 - value3
*
*
* @param paramsElement
* @return
*/
public static Map getParams(Element paramsElement) {
LinkedHashMap params = new LinkedHashMap();
if (paramsElement == null) {
return params;
}
NodeList childNodes = paramsElement.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node childNode = childNodes.item(i);
if ((childNode.getNodeType() == Node.ELEMENT_NODE) && "param".equals(childNode.getNodeName())) {
Element paramElement = (Element) childNode;
String paramName = paramElement.getAttribute("name");
String val = getContent(paramElement);
if (val.length() > 0) {
params.put(paramName, val);
}
}
}
return params;
}
/**
* This method will return the content of this particular element
.
* For example,
*
*
* something_1
*
* When the {@link org.w3c.dom.Element} <result>
is passed in as
* argument (element
to this method, it returns the content of it,
* namely, something_1
in the example above.
*
* @return
*/
public static String getContent(Element element) {
StringBuilder paramValue = new StringBuilder();
NodeList childNodes = element.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
Node currentNode = childNodes.item(j);
if (currentNode != null &&
currentNode.getNodeType() == Node.TEXT_NODE) {
String val = currentNode.getNodeValue();
if (val != null) {
paramValue.append(val.trim());
}
}
}
return paramValue.toString().trim();
}
/**
* Return the value of the "order" attribute from the root element
*/
public static Integer getLoadOrder(Document doc) {
Element rootElement = doc.getDocumentElement();
String number = rootElement.getAttribute("order");
if (StringUtils.isNotBlank(number)) {
try {
return Integer.parseInt(number);
} catch (NumberFormatException e) {
return Integer.MAX_VALUE;
}
} else {
//no order specified
return Integer.MAX_VALUE;
}
}
}