java获取并解析RTX用户数据

来源:互联网 发布:淘宝网客厅吸顶灯 编辑:程序博客网 时间:2024/06/15 10:23

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import rtx.RTXSvrApi;
/*
*
* 获取并解析腾讯通RTX用户数据
*/
public class ExportRTXDataToOA {

//确认下根节点enterprise用不用解析
/**
* @param args
*/
public static void main(String[] args) {

//从XML文件导入数据到OA
//EmportDataByFilePath("C:/Documents and Settings/Administrator/桌面/userdata/userdata.xml");


//RTX接口导入数据到OA
//创建RTX接口对象
RTXSvrApi rtxSvr=new RTXSvrApi();
//获取RTX用户数据
String dataStr= rtxSvr.exportXmldata();
//导入数据到OA
EmportData(dataStr);
}
/**
* 解析XML数据
* @param xml数据
*/
public static void EmportData(String dataStr) {

//得到DOM解析器的工厂实例
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
try {
//从DOM工厂获得DOM解析器
DocumentBuilder dombuilder = domfac.newDocumentBuilder();

byte[] b = dataStr.getBytes();
InputStream ip = new ByteArrayInputStream(b);
//解析XML文档的输入流,得到一个Document
Document doc = dombuilder.parse(ip);
//得到XML文档的根节点enterprise
Element root = doc.getDocumentElement();

//得到节点的子节点
NodeList nodeList = root.getChildNodes();

if (nodeList != null) {
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
//取出找到节点departments
if(node.getNodeName().endsWith("departments")){
GetChildNode(node);//获取子节点
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 解析XML数据
* @param xml文件路径
*/
public static void EmportDataByFilePath(String path) {
//得到DOM解析器的工厂实例
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
try {
//从DOM工厂获得DOM解析器
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
//把要解析的XML文档转化为输入流,以便DOM解析器解析它
InputStream is = new FileInputStream(path);

//解析XML文档的输入流,得到一个Document
Document doc = dombuilder.parse(is);

//得到XML文档的根节点enterprise
Element root = doc.getDocumentElement();

//得到节点的子节点
NodeList nodeList = root.getChildNodes();

if (nodeList != null) {
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
//取出找到节点departments
if(node.getNodeName().endsWith("departments")){
GetChildNode(node);//获取子节点
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取子节点
* @param node 节点
*/
public static void GetChildNode(Node node){
//取出子节点集合
NodeList nodeList=node.getChildNodes();
for(int i=0;i<nodeList.getLength();i++){
//取出子节点
Node childNode=nodeList.item(i);
//user节点 输出 user属性
if(childNode.getNodeName().endsWith("user")&&childNode.getNodeType()==Node.ELEMENT_NODE){
GetUserAttributes(childNode);//输出节点属性及属性值
/*
* 插入用户信息
* 在此处往数据库插入用户信息
*
*/
}
//deparement节点 输出deparemnt属性,获取节点下的user
if(childNode.getNodeName().endsWith("department")&&childNode.getNodeType()==Node.ELEMENT_NODE){
GetDepAttributes(childNode);//输出节点属性及属性值
/*
* 插入部门信息
* 在此处往数据库表里插入部门信息
*
*/
GetChildNode(childNode);//获取子节点
System.out.println(childNode.getAttributes().getNamedItem(
"name").getNodeValue()+"部门结束");
}
}
}
/**
* 获取用户节点属性
* @param userNode 用户节点
*/
public static void GetUserAttributes(Node userNode){

/*RTX账号*/

String uid= userNode.getAttributes().getNamedItem(
"uid").getNodeValue();
System.out.print("RTX账号:"+uid);
System.out.print(";");

/*姓名*/
String name= userNode.getAttributes().getNamedItem(
"name").getNodeValue();
System.out.print("姓名:"+name);
System.out.print(";");
/*电子邮件*/
String email= userNode.getAttributes().getNamedItem(
"email").getNodeValue();
System.out.print("Email:"+email);
System.out.print(";");
/*手机*/
String mobile= userNode.getAttributes().getNamedItem(
"mobile").getNodeValue();
System.out.print("手机:"+mobile);
System.out.print(";");
/*RTX号码*/
String rtxno= userNode.getAttributes().getNamedItem(
"rtxno").getNodeValue();
System.out.print("RTX号码:"+rtxno);
System.out.print(";");
/*办公电话*/
String phone= userNode.getAttributes().getNamedItem(
"phone").getNodeValue();
System.out.print("电话:"+phone);
System.out.print(";");
/*职务*/
String position= userNode.getAttributes().getNamedItem(
"position").getNodeValue();
System.out.print("职务:"+position);
System.out.print(";");
/*传真*/
String fax= userNode.getAttributes().getNamedItem(
"fax").getNodeValue();
System.out.print("传真:"+fax);
System.out.print(";");
/*个人主页*/
String homepage= userNode.getAttributes().getNamedItem(
"homepage").getNodeValue();
System.out.print("个人主页:"+homepage);
System.out.print(";");
/*联系地址*/
String address= userNode.getAttributes().getNamedItem(
"address").getNodeValue();
System.out.print("家庭住址:"+address);
System.out.print(";");
/*邮编*/
String postcode= userNode.getAttributes().getNamedItem(
"postcode").getNodeValue();
System.out.print("邮编:"+postcode);
System.out.print(";");
/*国家*/
String country= userNode.getAttributes().getNamedItem(
"country").getNodeValue();
System.out.print("国家:"+country);
System.out.print(";");
/*省份*/
String province= userNode.getAttributes().getNamedItem(
"province").getNodeValue();
System.out.print("省份:"+province);
System.out.print(";");
/*城市*/
String city= userNode.getAttributes().getNamedItem(
"city").getNodeValue();
System.out.print("城市:"+city);
System.out.print(";");
/*毕业院校*/
String college= userNode.getAttributes().getNamedItem(
"college").getNodeValue();
System.out.print("毕业院校:"+college);
System.out.print(";");
/*年龄*/
String age= userNode.getAttributes().getNamedItem(
"age").getNodeValue();
System.out.print("年龄:"+age);
System.out.print(";");
/*性别*/
String gender= userNode.getAttributes().getNamedItem(
"gender").getNodeValue();
System.out.print("性别:"+gender);
System.out.print(";");
/*出生日期*/
String birthday= userNode.getAttributes().getNamedItem(
"birthday").getNodeValue();
System.out.print("出生日期:"+birthday);
System.out.print(";");
/*血型*/
String bloodtype= userNode.getAttributes().getNamedItem(
"bloodtype").getNodeValue();
System.out.print("血型:"+bloodtype);
System.out.print(";");
/*个人说明*/
String memo= userNode.getAttributes().getNamedItem(
"memo").getNodeValue();
System.out.print("个人说明:"+memo);
System.out.print(";");
/*认证方式*/
String type= userNode.getAttributes().getNamedItem(
"type").getNodeValue();
System.out.print("认证方式:"+type);
System.out.print(";");
/*权值*/
String authtype= userNode.getAttributes().getNamedItem(
"authtype").getNodeValue();
System.out.print("权值:"+authtype);
System.out.print("");
System.out.println();
}
/**
* 获取部门节点属性
* @param depNode 部门节点
*/
public static void GetDepAttributes(Node depNode){
/*name属性*/
String name= depNode.getAttributes().getNamedItem(
"name").getNodeValue();
System.out.print("部门名称:"+name);
System.out.print(";");
/*describe属性 */
String describe=depNode.getAttributes().getNamedItem("describe").getNodeValue();
System.out.print("描述:"+describe);
System.out.println();
}
}