天天看点

dom4j解析String类型的xml

  StringBuffer str = new StringBuffer();

  str.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")

  .append("<Request xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"Request.xsd\">")

  .append("<Header><RequestApp Name=\"AppName\"/></Header>")

  .append("<Body><Data>")

  .append("<Cell Name=\"edDeptID\" Value=\"2\" Annotation=\"部门ID\" DataType=\"int\"/>")

  .append("<Cell Name=\"ou\" Value=\"11\" Annotation=\"组织机构代码\" DataType=\"string\"/>")

  .append("<Cell Name=\"edUnitCode\" Value=\"21\" Annotation=\"单位编码\" DataType=\"int\"/>")

  .append("<Cell Name=\"edName\" Value=\"31\" Annotation=\"部门全称\" DataType=\"string\"/>")

  .append("<Cell Name=\"edDisplayName\" Value=\"41\" Annotation=\"部门简称\" DataType=\"string\"/>")

  .append("<Cell Name=\"edMail\" Value=\"\" Annotation=\"电子邮件\" DataType=\"string\"/>")

  .append("<Cell Name=\"postalAddress\" Value=\"\" Annotation=\"通讯地址\" DataType=\"string\"/>")

  .append("<Cell Name=\"postalCode\" Value=\"71\" Annotation=\"邮政编码\" DataType=\"string\"/>")

  .append("<Cell Name=\"telephoneNumber\" Value=\"81\" Annotation=\"部门办公电话\" DataType=\"string\"/>")

  .append("<Cell Name=\"facsimileTelephoneNumber\" Value=\"9\" Annotation=\"部门传真号码\" DataType=\"string\"/>")

  .append("<Cell Name=\"edOrder\" Value=\"1\" Annotation=\"排序号\" DataType=\"int\"/>")

  .append("<Cell Name=\"edSuperDepartment\" Value=\"111\" Annotation=\"上级部门ID\" DataType=\"int\"/>")

  .append("<Cell Name=\"edIsLeaf\" Value=\"1\" Annotation=\"是否页节点\" DataType=\"string\"/>")

  .append("<Cell Name=\"edRemark\" Value=\"1\" Annotation=\"备注\" DataType=\"string\"/>")

  .append("<Cell Name=\"edStatus\" Value=\"1\" Annotation=\"状态\" DataType=\"int\"/>")

  .append("</Data><Data>")

  .append("<Cell Name=\"edDeptID\" Value=\"1\" Annotation=\"部门ID\" DataType=\"int\"/>")

  .append("<Cell Name=\"ou\" Value=\"1\" Annotation=\"组织机构代码\" DataType=\"string\"/>")

  .append("<Cell Name=\"edUnitCode\" Value=\"1\" Annotation=\"单位编码\" DataType=\"int\"/>")

  .append("<Cell Name=\"edName\" Value=\"1\" Annotation=\"部门全称\" DataType=\"string\"/>")

  .append("<Cell Name=\"edDisplayName\" Value=\"1\" Annotation=\"部门简称\" DataType=\"string\"/>")

  .append("<Cell Name=\"edMail\" Value=\"1\" Annotation=\"电子邮件\" DataType=\"string\"/>")

  .append("<Cell Name=\"postalAddress\" Value=\"1\" Annotation=\"通讯地址\" DataType=\"string\"/>")

  .append("<Cell Name=\"postalCode\" Value=\"1\" Annotation=\"邮政编码\" DataType=\"string\"/>")

  .append("<Cell Name=\"telephoneNumber\" Value=\"1\" Annotation=\"部门办公电话\" DataType=\"string\"/>")

  .append("<Cell Name=\"facsimileTelephoneNumber\" Value=\"1\" Annotation=\"部门传真号码\" DataType=\"string\"/>")

  .append("<Cell Name=\"edOrder\" Value=\"1\" Annotation=\"排序号\" DataType=\"int\"/>")

  .append("<Cell Name=\"edSuperDepartment\" Value=\"1\" Annotation=\"上级部门ID\" DataType=\"int\"/>")

  .append("<Cell Name=\"edIsLeaf\" Value=\"\" Annotation=\"是否页节点\" DataType=\"string\"/>")

  .append("<Cell Name=\"edRemark\" Value=\"1\" Annotation=\"备注\" DataType=\"string\"/>")

  .append("<Cell Name=\"edStatus\" Value=\"1\" Annotation=\"状态\" DataType=\"int\"/>")

  .append("</Data></Body></Request>");

以上是xml文件

 下面是具体实现解析xml

package WebService;

import java.io.StringReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.srit.entity.local.SysOrganEntity;

/**
 * 解析组织机构xml
 * @author LP
 *
 */
public class OrgganGetInfoFromXml {
 
 /**
  * 解析组织机构xml
  * @param deptXML xml格式的字符串
  * @return 组织结构数据集
  */
 public static List<SysOrganEntity> getSysOrggans(String deptXML){
  SAXReader saxReader = new SAXReader();
  Document document = null;
  try{
   document = saxReader.read(new StringReader(deptXML));
  }catch(DocumentException e){
   e.printStackTrace();
   return null;
  }
  Element root = document.getRootElement();
  List<SysOrganEntity> list = new ArrayList();
  // 获取组织结构组
  List orgganNodes = root.selectNodes("/Request/Body/Data");
  for (Iterator i = orgganNodes.iterator(); i.hasNext();) {
   Element Datas = (Element) i.next();
   List cells = Datas.selectNodes("Cell");
   SysOrganEntity orggan = new SysOrganEntity();
   for (Iterator c = cells.iterator(); c.hasNext();) 
   {
    Element cell = (Element) c.next();
    if(cell.attributeValue("Name").equals("edDeptID"))
    {
     //部门ID
     if(!"".equals(cell.attributeValue("Value"))&& cell.attributeValue("Value") != null)
     orggan.setOrg_id(Integer.valueOf(cell.attributeValue("Value")));
    }else if(cell.attributeValue("Name").equals("ou"))
    {
     //组织机构代码
     orggan.setOrg_code(cell.attributeValue("Value"));
    }else if(cell.attributeValue("Name").equals("edName"))
    {
     //部门全称
     orggan.setOrg_name(cell.attributeValue("Value"));
    }else if(cell.attributeValue("Name").equals("edSuperDepartment"))
    {
     //上级组织机构编号
     orggan.setSuper_org_id(Integer.valueOf(cell.attributeValue("Value")));
    }else if(cell.attributeValue("Name").equals("edDisplayName"))
    {
     //部门简称
     orggan.setOrg_short_name(cell.attributeValue("Value"));
    }else if(cell.attributeValue("Name").equals("edStatus"))
    {
     //状态
     if(!"".equals(cell.attributeValue("Value"))&& cell.attributeValue("Value") != null)
     orggan.setStatus(Integer.valueOf(cell.attributeValue("Value")));
    }else if(cell.attributeValue("Name").equals("edOrder"))
    {
     
     //排序号
     if(!"".equals(cell.attributeValue("Value"))&& cell.attributeValue("Value") != null)
     orggan.setDisplay_serial(Integer.valueOf(cell.attributeValue("Value")));
     
    }else if(cell.attributeValue("Name").equals("edMail"))
    {
     //电子邮件
     orggan.setEmail_address(cell.attributeValue("Value"));
    }else if(cell.attributeValue("Name").equals("postalAddress"))
    {
     //联系地址
     orggan.setContact_address(cell.attributeValue("Value"));
    }else if(cell.attributeValue("Name").equals("postalCode"))
    {
     //邮政编码
     orggan.setPost_code(cell.attributeValue("Value"));
    }else if(cell.attributeValue("Name").equals("telephoneNumber"))
    {
     //联系电话
     orggan.setContact_phone(cell.attributeValue("Value"));
    }else if(cell.attributeValue("Name").equals("facsimileTelephoneNumber"))
    {
     //传真号码
     orggan.setFax_phone(cell.attributeValue("Value"));
    }
    
   }
   list.add(orggan);
  }
  return list;
 }
 
 public static String returnXmlMsg(String msg,int rs){
  StringBuffer str = new StringBuffer();
  str.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
  .append("<Response>")
  .append("<Result ErrMsg=\""+ msg +"\" Value=\""+ rs +"\"/>")
  .append("</Response>");
  return str.toString();
 }
 
}