XML的add,update.delete,select
来源:互联网 发布:iphone ssh 默认端口 编辑:程序博客网 时间:2024/05/16 11:52
public String getFilterUrls()
{
Document doc = getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
StringBuffer sb = new StringBuffer();
// 遍历filterUrlsList
for (Element e : filList)
{
//添加到filterUrlsList
sb.append(e.getText().trim() + ",");
}
filrUrls = sb.toString();
return SUCCESS;
}
/**
* < 获取仅列号全部问题单链接>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String getRecordUrls()
{
Document doc = this.getElement();
// 得到根节点
Element root = doc.getRootElement();
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
StringBuffer sb = new StringBuffer();
// 遍历recordUrlsList
for (Element e : recList)
{
sb.append(e.getText().trim() + ",");
}
recUrls = sb.toString();
return SUCCESS;
}
/**
* <更新非撤销问题单下载链接>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String updateDts()
{
// 获取文件的节点的ID
String dtsId = StringTools.getStringFromMap(getParameter(), "dtsId");
// 获取问题单修改的内容
String dtsCon = StringTools.getStringFromMap(getParameter(), "dtsCon");
// 获取修改的问题链接的类型
String dtsType =
StringTools.getStringFromMap(getParameter(), "dtsType");
// 得到 Document对象
Document doc = this.getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
// 创建一个list<String>, 来保存读取的数据和修改的数据
List<String> urlList = new ArrayList<String>();
//未修改的问题单链接
List<String> otherUrlList = new ArrayList<String>();
//判断修改问题单类型
if ("filterUrls".equals(dtsType))
{
// 遍历recordUrlsList
for (int i = 0; i < filList.size(); i++)
{
//判断修改的节点ID 是否等于xml的节点
if (Integer.parseInt(dtsId) == i)
{
urlList.add(dtsCon);
}
else
{
urlList.add(filList.get(i).getText());
}
}
//未修改的问题单
for (int i = 0; i < recList.size(); i++)
{
otherUrlList.add(recList.get(i).getText());
}
// 调用修改XML节点方法
if (this.creXml(urlList, otherUrlList, "filterUrls"))
{
//修改成功返回码
isTrue = "true";
return SUCCESS;
}
}
else if ("recordUrls".equals(dtsType))
{
// 遍历recordUrlsList
for (int i = 0; i < recList.size(); i++)
{
//判断修改的节点ID 是否等于xml的节点
if (Integer.parseInt(dtsId) == i)
{
urlList.add(dtsCon);
}
else
{
urlList.add(recList.get(i).getText());
}
}
//未修改的问题单
for (int i = 0; i < filList.size(); i++)
{
otherUrlList.add(filList.get(i).getText());
}
// 调用修改XML节点方法
if (this.creXml(urlList, otherUrlList, "recordUrls"))
{
//修改成功返回码
isTrue = "true";
return SUCCESS;
}
}
return ERROR;
}
/**
* <根据ID删除问题单链接>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String deleteDts()
{
OutputFormat format = null;
XMLWriter writer = null;
// 获取文件的节点的ID
String dtsId = StringTools.getStringFromMap(getParameter(), "dtsId");
// 获取删除的问题链接的类型
String dtsType =
StringTools.getStringFromMap(getParameter(), "dtsType");
// 得到 Document对象
Document doc = this.getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
// 判断要删除的类型
if ("filterUrls".equals(dtsType))
{
//删除某一个URL节点
for (int i = 0; i < filList.size(); i++)
{
Element el = filList.get(i);
if (i == Integer.parseInt(dtsId))
{
filList.remove(el);
}
}
}
else if ("recordUrls".equals(dtsType))
{
//删除某一个URL节点
for (int i = 0; i < recList.size(); i++)
{
Element el = recList.get(i);
if (i == Integer.parseInt(dtsId))
{
recList.remove(el);
}
}
}
format = OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("UTF-8");
try
{
writer = new XMLWriter(new FileWriter(new File(strUrl)), format);
writer.write(doc);
writer.close();
}
catch (IOException e)
{
LOG.error(StringVar.INPOUTIO, e);
}
//成功返回码
isTrue = "true";
return SUCCESS;
}
/**
* <增加问题单>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String addDts()
{
// 获取增加的问题链接
String dtsCon = StringTools.getStringFromMap(getParameter(), "dtsCon");
// 获取增加的问题链接的类型
String dtsType =
StringTools.getStringFromMap(getParameter(), "dtsType");
// 得到 Document对象
Document doc = this.getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
int urlSize = managerService.queryVersionList();
if (filList.size() >= urlSize && "filterUrls".equals(dtsType))
{
//向页面传值(能增加的问题单的数量)
vSize = urlSize;
}
else if (recList.size() >= urlSize && "recordUrls".equals(dtsType))
{
//向页面传值(能增加的问题单的数量)
vSize = urlSize;
}
// 创建一个list<String>, 来保存读取的数据和修改的数据
List<String> urlList = new ArrayList<String>();
//未修改的问题单链接
List<String> otherUrlList = new ArrayList<String>();
//判断增加的问题单URL
if ("filterUrls".equals(dtsType)
&& filList.size() < urlSize)
{
for (Element el : filList)
{
urlList.add(el.getText());
}
urlList.add(dtsCon);
//未修改的问题单
for (int i = 0; i < recList.size(); i++)
{
otherUrlList.add(recList.get(i).getText());
}
// 创建新的问题单链接
this.creXml(urlList, otherUrlList, "addFilterUrls");
}
else if ("recordUrls".equals(dtsType)
&& recList.size() < urlSize)
{
for (Element el : recList)
{
urlList.add(el.getText());
}
urlList.add(dtsCon);
//未修改的问题单
for (int i = 0; i < filList.size(); i++)
{
otherUrlList.add(filList.get(i).getText());
}
// 创建新的问题单链接
this.creXml(urlList, otherUrlList, "addRecordUrls");
}
return SUCCESS;
}
/**
* <获取Element的对象值>
* <功能详细描述>
* @return document
* @see [类、类#方法、类#成员]
*/
private Document getElement()
{
// 获取文件路径
File fi = new File(strUrl);
// 创建dom4j的 SAXReader对象
SAXReader saxReader = new SAXReader();
Document doc = null;
try
{
doc = saxReader.read(fi);
}
catch (DocumentException e)
{
LOG.error(StringVar.LISTERROR, e);
}
return doc;
}
/**
* <修改XML的url节点>
* <功能详细描述>
* @param urlList 修改的url节点内容
* @param otherUrlList 没有修改的哪个问题单链接
* @param urlName 修改节点的名称
* @return success
* @see [类、类#方法、类#成员]
*/
public boolean creXml(List<String> urlList, List<String> otherUrlList,
String urlName)
{
boolean flag = false;
// document对象
Document document = null;
//根节点
Element autoDownConifg = null;
//dbServer节点
Element dbServer = null;
//dbUser节点
Element dbUser = null;
//dbPwd节点
Element dbPwd = null;
//dbName节点
Element dbName = null;
//domainHost节点
Element domainHost = null;
//filterDir节点
Element filterDir = null;
//recordDir节点
Element recordDir = null;
//filterUrls节点
Element filterUrls = null;
//recordUrls节点
Element recordUrls = null;
//url节点
//Element url = null;
OutputFormat format = null;
XMLWriter writer = null;
try
{
document = DocumentHelper.createDocument();
// 给各个节点放值
autoDownConifg = document.addElement("autoDownConifg");
dbServer = autoDownConifg.addElement("dbServer");
dbServer.setText("localhost");
dbUser = autoDownConifg.addElement("dbUser");
dbUser.setText("root");
dbPwd = autoDownConifg.addElement("dbPwd");
dbPwd.setText("LTE_2011");
dbName = autoDownConifg.addElement("dbName");
dbName.setText("cilog");
domainHost = autoDownConifg.addElement("domainHost");
domainHost.setText("china.huawei.com");
// 创建CDATA节点
filterDir = autoDownConifg.addElement("filterDir");
filterDir.addCDATA(strFilterDir);
// 创建CDATA节点
recordDir = autoDownConifg.addElement("recordDir");
recordDir.addCDATA(strRecordDir);
filterUrls = autoDownConifg.addElement("filterUrls");
recordUrls = autoDownConifg.addElement("recordUrls");
// 判断修改的XML是什么节点
if ("filterUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, filterUrls, recordUrls);
}
else if ("recordUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, recordUrls, filterUrls);
}
// 判断增加的XML是什么节点
if ("addFilterUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, filterUrls, recordUrls);
}
else if ("addRecordUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, recordUrls, filterUrls);
}
format = OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("UTF-8");
writer = new XMLWriter(new FileWriter(new File(strUrl)), format);
writer.write(document);
writer.close();
flag = true;
return flag;
}
catch (Exception e)
{
LOG.error(StringVar.CREATEXML, e);
}
return flag;
}
/**
* <修改或者新增XML的FilterUrls节点URL>
* <功能详细描述>
* @param urlList
* @param otherUrlList
* @param filterUrls
* @param recordUrls
* @see [类、类#方法、类#成员]
*/
private void upFilterUrls(List<String> urlList, List<String> otherUrlList,
Element filterUrls, Element recordUrls)
{
Element url;
//循环插入到节点中 (CDATA)
for (int i = 0; i < urlList.size(); i++)
{
url = filterUrls.addElement("url");
url.addCDATA(urlList.get(i));
}
//循环插入recordUrls节点的URL (CDATA)
for (int i = 0; i < otherUrlList.size(); i++)
{
url = recordUrls.addElement("url");
url.addCDATA(otherUrlList.get(i));
}
}
{
Document doc = getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
StringBuffer sb = new StringBuffer();
// 遍历filterUrlsList
for (Element e : filList)
{
//添加到filterUrlsList
sb.append(e.getText().trim() + ",");
}
filrUrls = sb.toString();
return SUCCESS;
}
/**
* < 获取仅列号全部问题单链接>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String getRecordUrls()
{
Document doc = this.getElement();
// 得到根节点
Element root = doc.getRootElement();
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
StringBuffer sb = new StringBuffer();
// 遍历recordUrlsList
for (Element e : recList)
{
sb.append(e.getText().trim() + ",");
}
recUrls = sb.toString();
return SUCCESS;
}
/**
* <更新非撤销问题单下载链接>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String updateDts()
{
// 获取文件的节点的ID
String dtsId = StringTools.getStringFromMap(getParameter(), "dtsId");
// 获取问题单修改的内容
String dtsCon = StringTools.getStringFromMap(getParameter(), "dtsCon");
// 获取修改的问题链接的类型
String dtsType =
StringTools.getStringFromMap(getParameter(), "dtsType");
// 得到 Document对象
Document doc = this.getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
// 创建一个list<String>, 来保存读取的数据和修改的数据
List<String> urlList = new ArrayList<String>();
//未修改的问题单链接
List<String> otherUrlList = new ArrayList<String>();
//判断修改问题单类型
if ("filterUrls".equals(dtsType))
{
// 遍历recordUrlsList
for (int i = 0; i < filList.size(); i++)
{
//判断修改的节点ID 是否等于xml的节点
if (Integer.parseInt(dtsId) == i)
{
urlList.add(dtsCon);
}
else
{
urlList.add(filList.get(i).getText());
}
}
//未修改的问题单
for (int i = 0; i < recList.size(); i++)
{
otherUrlList.add(recList.get(i).getText());
}
// 调用修改XML节点方法
if (this.creXml(urlList, otherUrlList, "filterUrls"))
{
//修改成功返回码
isTrue = "true";
return SUCCESS;
}
}
else if ("recordUrls".equals(dtsType))
{
// 遍历recordUrlsList
for (int i = 0; i < recList.size(); i++)
{
//判断修改的节点ID 是否等于xml的节点
if (Integer.parseInt(dtsId) == i)
{
urlList.add(dtsCon);
}
else
{
urlList.add(recList.get(i).getText());
}
}
//未修改的问题单
for (int i = 0; i < filList.size(); i++)
{
otherUrlList.add(filList.get(i).getText());
}
// 调用修改XML节点方法
if (this.creXml(urlList, otherUrlList, "recordUrls"))
{
//修改成功返回码
isTrue = "true";
return SUCCESS;
}
}
return ERROR;
}
/**
* <根据ID删除问题单链接>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String deleteDts()
{
OutputFormat format = null;
XMLWriter writer = null;
// 获取文件的节点的ID
String dtsId = StringTools.getStringFromMap(getParameter(), "dtsId");
// 获取删除的问题链接的类型
String dtsType =
StringTools.getStringFromMap(getParameter(), "dtsType");
// 得到 Document对象
Document doc = this.getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
// 判断要删除的类型
if ("filterUrls".equals(dtsType))
{
//删除某一个URL节点
for (int i = 0; i < filList.size(); i++)
{
Element el = filList.get(i);
if (i == Integer.parseInt(dtsId))
{
filList.remove(el);
}
}
}
else if ("recordUrls".equals(dtsType))
{
//删除某一个URL节点
for (int i = 0; i < recList.size(); i++)
{
Element el = recList.get(i);
if (i == Integer.parseInt(dtsId))
{
recList.remove(el);
}
}
}
format = OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("UTF-8");
try
{
writer = new XMLWriter(new FileWriter(new File(strUrl)), format);
writer.write(doc);
writer.close();
}
catch (IOException e)
{
LOG.error(StringVar.INPOUTIO, e);
}
//成功返回码
isTrue = "true";
return SUCCESS;
}
/**
* <增加问题单>
* <功能详细描述>
* @return success
* @see [类、类#方法、类#成员]
*/
public String addDts()
{
// 获取增加的问题链接
String dtsCon = StringTools.getStringFromMap(getParameter(), "dtsCon");
// 获取增加的问题链接的类型
String dtsType =
StringTools.getStringFromMap(getParameter(), "dtsType");
// 得到 Document对象
Document doc = this.getElement();
// 读取文件
// 得到根节点
Element root = doc.getRootElement();
// 取得filterUrls节点
Element filterUrls = root.element("filterUrls");
// 取得recordUrls节点
Element recordUrls = root.element("recordUrls");
//得到filterUrls多个url节点的list
List<Element> filList = filterUrls.elements("url");
//得到recordUrls多个url节点的list
List<Element> recList = recordUrls.elements("url");
int urlSize = managerService.queryVersionList();
if (filList.size() >= urlSize && "filterUrls".equals(dtsType))
{
//向页面传值(能增加的问题单的数量)
vSize = urlSize;
}
else if (recList.size() >= urlSize && "recordUrls".equals(dtsType))
{
//向页面传值(能增加的问题单的数量)
vSize = urlSize;
}
// 创建一个list<String>, 来保存读取的数据和修改的数据
List<String> urlList = new ArrayList<String>();
//未修改的问题单链接
List<String> otherUrlList = new ArrayList<String>();
//判断增加的问题单URL
if ("filterUrls".equals(dtsType)
&& filList.size() < urlSize)
{
for (Element el : filList)
{
urlList.add(el.getText());
}
urlList.add(dtsCon);
//未修改的问题单
for (int i = 0; i < recList.size(); i++)
{
otherUrlList.add(recList.get(i).getText());
}
// 创建新的问题单链接
this.creXml(urlList, otherUrlList, "addFilterUrls");
}
else if ("recordUrls".equals(dtsType)
&& recList.size() < urlSize)
{
for (Element el : recList)
{
urlList.add(el.getText());
}
urlList.add(dtsCon);
//未修改的问题单
for (int i = 0; i < filList.size(); i++)
{
otherUrlList.add(filList.get(i).getText());
}
// 创建新的问题单链接
this.creXml(urlList, otherUrlList, "addRecordUrls");
}
return SUCCESS;
}
/**
* <获取Element的对象值>
* <功能详细描述>
* @return document
* @see [类、类#方法、类#成员]
*/
private Document getElement()
{
// 获取文件路径
File fi = new File(strUrl);
// 创建dom4j的 SAXReader对象
SAXReader saxReader = new SAXReader();
Document doc = null;
try
{
doc = saxReader.read(fi);
}
catch (DocumentException e)
{
LOG.error(StringVar.LISTERROR, e);
}
return doc;
}
/**
* <修改XML的url节点>
* <功能详细描述>
* @param urlList 修改的url节点内容
* @param otherUrlList 没有修改的哪个问题单链接
* @param urlName 修改节点的名称
* @return success
* @see [类、类#方法、类#成员]
*/
public boolean creXml(List<String> urlList, List<String> otherUrlList,
String urlName)
{
boolean flag = false;
// document对象
Document document = null;
//根节点
Element autoDownConifg = null;
//dbServer节点
Element dbServer = null;
//dbUser节点
Element dbUser = null;
//dbPwd节点
Element dbPwd = null;
//dbName节点
Element dbName = null;
//domainHost节点
Element domainHost = null;
//filterDir节点
Element filterDir = null;
//recordDir节点
Element recordDir = null;
//filterUrls节点
Element filterUrls = null;
//recordUrls节点
Element recordUrls = null;
//url节点
//Element url = null;
OutputFormat format = null;
XMLWriter writer = null;
try
{
document = DocumentHelper.createDocument();
// 给各个节点放值
autoDownConifg = document.addElement("autoDownConifg");
dbServer = autoDownConifg.addElement("dbServer");
dbServer.setText("localhost");
dbUser = autoDownConifg.addElement("dbUser");
dbUser.setText("root");
dbPwd = autoDownConifg.addElement("dbPwd");
dbPwd.setText("LTE_2011");
dbName = autoDownConifg.addElement("dbName");
dbName.setText("cilog");
domainHost = autoDownConifg.addElement("domainHost");
domainHost.setText("china.huawei.com");
// 创建CDATA节点
filterDir = autoDownConifg.addElement("filterDir");
filterDir.addCDATA(strFilterDir);
// 创建CDATA节点
recordDir = autoDownConifg.addElement("recordDir");
recordDir.addCDATA(strRecordDir);
filterUrls = autoDownConifg.addElement("filterUrls");
recordUrls = autoDownConifg.addElement("recordUrls");
// 判断修改的XML是什么节点
if ("filterUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, filterUrls, recordUrls);
}
else if ("recordUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, recordUrls, filterUrls);
}
// 判断增加的XML是什么节点
if ("addFilterUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, filterUrls, recordUrls);
}
else if ("addRecordUrls".equals(urlName))
{
upFilterUrls(urlList, otherUrlList, recordUrls, filterUrls);
}
format = OutputFormat.createPrettyPrint();
//设置编码
format.setEncoding("UTF-8");
writer = new XMLWriter(new FileWriter(new File(strUrl)), format);
writer.write(document);
writer.close();
flag = true;
return flag;
}
catch (Exception e)
{
LOG.error(StringVar.CREATEXML, e);
}
return flag;
}
/**
* <修改或者新增XML的FilterUrls节点URL>
* <功能详细描述>
* @param urlList
* @param otherUrlList
* @param filterUrls
* @param recordUrls
* @see [类、类#方法、类#成员]
*/
private void upFilterUrls(List<String> urlList, List<String> otherUrlList,
Element filterUrls, Element recordUrls)
{
Element url;
//循环插入到节点中 (CDATA)
for (int i = 0; i < urlList.size(); i++)
{
url = filterUrls.addElement("url");
url.addCDATA(urlList.get(i));
}
//循环插入recordUrls节点的URL (CDATA)
for (int i = 0; i < otherUrlList.size(); i++)
{
url = recordUrls.addElement("url");
url.addCDATA(otherUrlList.get(i));
}
}
- XML的add,update.delete,select
- Xml replace DB operate(select, delete, add, update)
- 数据库的insert\update\delete\select查询
- Insert Update Delete Select
- select update delete
- thinkphp add update Delete操作
- MyBatis (一)configuration.xml的配置/mapper持久类的映射/sqlSession的获取/基础的select,insert,delete,update
- mysql-update、delete、select操作
- 数据库的insert , delete , update , select 的基本语句
- jdbc----mysql的select、insert、update、delete 基本语句
- 敏捷灰度--select 代替 update、delete的灰度策略
- datanucleus+spring 的JDO操作 select save update delete
- jdbctemplate 的insert、update、delete以及select操作
- 04 Mybatis应用篇---XML映射文件之select,insert,update,delete基础介绍
- 05 Mybatis应用篇---XML映射文件之select,insert,update,delete实战
- select,delete,update,insert语句使用方法
- Hibernate insert,select,update,delete方法
- SQL语句复习:insert,update,delete,select
- java Class的泛型笔记
- SC Create 创建一个Windows系统服务
- hdu1905||poj3641 Pseudoprime numbers
- struts2+spring的两种整合方式
- 5.每颗类继承树一张表:总结
- XML的add,update.delete,select
- poj 2352(入门线段树)
- 遍历子窗口的函数
- 2012年8月29日 学习总结
- android中The connection to adb is down ,adb server didn't ACK 问题和解决
- LINUX网络编程之设计流程
- ArcGIS Viewer for Silverlight 系列:使用Application Builder快速构建GIS应用
- HD1170
- 上传android手机图片到服务器的方法