文件内容如下

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://WebXml.com.cn/">
<string>浙江</string>
<string>杭州</string>
<string>58457</string>
<string>58457.jpg</string>
<string>2016-3-22 17:57:12</string>
<string>11℃/16℃</string>
<string>3月22日 阵雨</string>
<string>东南风微风</string>
<string>3.gif</string>
<string>3.gif</string>
<string>今日天气实况:气温:13℃;风向/风力:南风 1级;湿度:81%;紫外线强度:弱。空气质量:良。</string>
<string>
紫外线指数:弱,辐射较弱,涂擦SPF12-15、PA+护肤品。 感冒指数:较易发,天凉,湿度大,较易感冒。 穿衣指数:较冷,建议着厚外套加毛衣等服装。 洗车指数:不宜,有雨,雨水和泥水会弄脏爱车。
运动指数:较不宜,有降水,推荐您在室内进行休闲运动。 空气污染指数:良,气象条件有利于空气污染物扩散。
</string>
<string>6℃/12℃</string>
<string>3月23日 阵雨转阴</string>
<string>东北风3-4级</string>
<string>3.gif</string>
<string>2.gif</string>
<string>5℃/13℃</string>
<string>3月24日 多云</string>
<string>北风3-4级</string>
<string>1.gif</string>
<string>1.gif</string>
<string>
杭州市是浙江省省会,国务院确定的全国重点风景旅游城市和历史文化名城,位于北纬30°16’、东经120°12’,地处长江三角洲南翼,杭州湾西端,钱塘江下游,京杭大运河南端,东濒杭州湾、钱塘江,南与金华市、衢州市、绍兴市相接,西与安徽省黄山市交界,北与湖州市、嘉兴市相邻。下辖8个区、5个县(市),全市总面积16596平方千米,其中市区面积3068平方千米。改革开放以来,杭州经济发展迅猛,2007年全市实现国内生产总值4103.89亿元,人均GDP达8063美元,连续17年保持2位数增长,连续4年被誉为“中国最具幸福感的城市”。
杭州尤以西湖秀丽迷人的自然风光闻名于世。美丽的西湖三面环山,一面濒城,两堤卧波,三岛浮水,风景秀丽,四季异色,古迹珠连,名人荟萃,历代诗人吟咏不绝。杭州自然景观和人文景观十分丰富,文物、古迹众多,古代庭、园、楼、阁、塔、寺、泉、壑、石窟、摩崖碑刻遍布,众多景点或诡异神秘、内蕴深沉,或珠帘玉带、烟柳画桥,或万千姿态、蔚然奇观,或山青水秀、风情万般。全市现有60多个对外开放景点和40多处重点文物保护单位,以灵隐寺、六和塔、飞来峰、岳庙、西泠印社、三潭印月、花港观鱼、龙井、虎跑等最为著名。
</string>
</ArrayOfString> <!--
根据城市或地区名称查询获得未来三天内天气情况、现在的天气实况、天气和生活指数
调用方法如下:输入参数:theCityName = 城市中文名称(国外城市可用英文)或城市代码(不输入默认为上海市),如:上海 或 58367,如有城市名称重复请使用城市代码查询(可通过 getSupportCity 或 getSupportDataSet 获得);返回数据: 一个一维数组 String(22),共有23个元素。
String(0) 到 String(4):省份,城市,城市代码,城市图片名称,最后更新时间。String(5) 到 String(11):当天的 气温,概况,风向和风力,天气趋势开始图片名称(以下称:图标一),天气趋势结束图片名称(以下称:图标二),现在的天气实况,天气和生活指数。String(12) 到 String(16):第二天的 气温,概况,风向和风力,图标一,图标二。String(17) 到 String(21):第三天的 气温,概况,风向和风力,图标一,图标二。String(22) 被查询的城市或地区的介绍
下载天气图标(包含大、中、小尺寸) 天气图例说明 调用此天气预报Web Services实例下载 (VB ASP.net 2.0)-->

注意,该xml是带命名空间的!!!

如果这份xml是一份本地文件,可以用以下方法:

@Test
public void convertTest(){
try {
//File directory = new File("");//设定为当前文件夹
//directory.getCanonicalPath()
SAXReader reader = new SAXReader();
Document document = reader.read(new File(
"src\\test\\java\\com\\hikvision\\ibms\\indexconfig\\runtime\\engine" +
"\\weather.xml"));
//法一
String t=document.asXML();
System.out.println("读取完毕:"+"\n"+t);
Element rootElm = document.getRootElement();
System.out.println(rootElm.getName());
List nodes = rootElm.elements("string");
System.out.println("第一种方法读元素string的个数为:"+nodes.size());
//法二
HashMap map = new HashMap();
map.put("design",rootElm.getNamespaceURI());
// 创建解析路径,就是在普通的解析路径前加上map里的key值
XPath xPath = document.createXPath("//design:ArrayOfString/design:string");
xPath.setNamespaceURIs(map);
List nodes2 = xPath.selectNodes(document);
System.out.println("第二种方法读取元素string的个数为:"+nodes2.size());
} catch (Exception e) {
e.printStackTrace();
}
}

如果是基于webservice,远程读取文件的话,可以使用:

package endpoint;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; /**
* 类作用调用webservice得到天气预报服务
*/
public class Weather {
/**
* 获取soap请求头,并替换其中的标志符号为用户的输入符号
* @param city 用户输入城市名
* @return 用户将要发送给服务器的soap请求
*/
private static String getSoapRequest(String city) {
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+ "<soap:Body> <getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">"
+ "<theCityName>" + city
+ "</theCityName> </getWeatherbyCityName>"
+ "</soap:Body></soap:Envelope>");
return sb.toString();
}
/**
* 用户把SOAP请求发送给服务器端,并返回服务器点返回的输入流
* @param city 用户输入的城市名称
* @return 服务器端返回的输入流,供客户端读取
* @throws Exception
*/
public static InputStream getSoapInputStream(String city) throws Exception {
try {
String soap = getSoapRequest(city);
if (soap == null) {
return null;
}
URL url = new URL(
"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
URLConnection conn = url.openConnection();
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Content-Length", Integer.toString(soap
.length()));
conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
conn.setRequestProperty("SOAPAction",
"http://WebXml.com.cn/getWeatherbyCityName");
OutputStream os = conn.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
osw.write(soap);
osw.flush();
osw.close();
InputStream is = conn.getInputStream();
//System.out.println(is.toString());
return is;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 通过dom4j对服务器端返回的XML进行解析
* @param city 用户输入的城市名称
* @return 符串 用,分割
*/
public static String getWeather(String city) {
Document document=null;
SAXReader reader = new SAXReader();
String s="";
Map map=new HashMap();
map.put("design", "http://WebXml.com.cn/");
reader.getDocumentFactory().setXPathNamespaceURIs(map);
try {
InputStream is = getSoapInputStream(city);//得到输入流
document=reader.read(is);//将输入流转化为document
String t=document.asXML();
} catch (Exception e) {
e.printStackTrace();
}
List nodes = document.selectNodes("//design:string");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
String text=elm.getText();
//System.out.println("fsffs"+text);
s=s+elm.getText()+"\n";
}
return s;
}
/**
* 测试函数
* @param args
*/
public static void main(String args[]){
Weather w=new Weather();
System.out.println(w.getWeather("杭州"));
}
}

dom4j解析带命名空间的xml文件的更多相关文章

  1. 带命名空间的XML的dom4j应用<转>

    Element root = document.getRootElement();     List   recordenvlist = document.selectNodes("//gm ...

  2. C#读取带命名空间的xml,xaml文件的解决方案

    使用C#读取xml文件有三种常用的方式: 1.xmlDocument 2.XmlTextReader 3.Linq To Xml 但是这些方式在读写有些带命名空间的xml时就不知道怎么办了(例如把xa ...

  3. 由“Jasperrpeorts 4.1.2升级到5.1.2对flex项目的解析”到AS3 带命名空间的XML的操作

    原文同步至:http://www.waylau.com/from-jasperrpeorts-4-1-2-upgraded-to-5-1-2-parsing-of-flex-projects-to-t ...

  4. js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

    ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId ...

  5. dom4j处理带命名空间的XML-使用XPath(转)

    dom4j处理带命名空间的XML-使用XPath 博客分类: XML   XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 使 ...

  6. 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  7. android使用Pull解析来自服务器的xml文件时出现错误以及解决方案

    直接上代码,代码中有详细注释: 1 public class CheckUpdateManager { 2 private static final String TAG = "CheckU ...

  8. Linq解析带命名空间、前缀、Soap格式的XML

    关于XML,经常会用到,XML有一般的,同样也有二般的,更不要觉得会操作基础的XML就觉得自己已经精通XML操作,文中是对解析XML的方法进行介绍 1. 一般XML <?xml version= ...

  9. C# 解析带前缀的Xml节点内容

    一般的xml文件相信大家都会解析了,但是遇到有命名空间的带前缀的xml,对于新手可能会有点问题.我这里在论坛解答的时候就遇到过一题,见怎么获取XML节点里面的内容,在线求教.这里给大家演示一下. 他的 ...

随机推荐

  1. ios block常见的错误(二)——循环引用

    这篇博文继续block的常见错误——循环引用. 循环引用是很多初学者不能察觉的,其产生的原因,是block中的代码会对对象进行强引用. 读者请阅读示例代码1,并思考示例代码1所创建的对象能否被正常销毁 ...

  2. java多线程(二)之实现Runnable接口

    一.java多线程方式2: 实现Runnable接口 好处:a. 可以避免由于java单继承带来的局限性. b. 适合多个相同的程序的代码去处理同一个资源的情况, 把线程与程序的代码, 数据有效分离, ...

  3. Linux命令-用户管理:useradd,userdel,usermod,id,su,env,exit

    添加一个linux用户之后,相当于在linux系统里面创建了如下文件: 添加一个用户(默认也会创建一个同名的用户组,在linux下面用户默认必须在一个用户组里面): useradd wyp 添加用户w ...

  4. Ubuntu 10.04 安装Qt4.8.1 源码后字体模糊的问题

    Ubuntu 10.04 安装QT4.8.1 源码后字体模糊的问题. 附加解决 QT SDK 4.8.1 链接失败的问题 Ubuntu 10.04 编译QT源码后,编译程序,运行后IPA字体无法正常显 ...

  5. Ext.net中Combobox如何绑定数据库中的值-通用方法

    今天在项目中再次碰到了问题,就是Combobox中的值如果是直接绑定很简单.简单添加项就行了.代码如下: <ext:ComboBox ID=" /> </Items> ...

  6. 使用 bat cmd命令杀掉 删掉运行的程序

    删掉所有xx.exe开启的进程 taskkill /f /im xx.exe 开启xx.exe start xx.exe 根据标题栏信息删除 taskkill /f /FI "windows ...

  7. Spring AOP之Introduction(@DeclareParents)简介(转)

    Spring的文档上对Introduction这个概念和相关的注解@DeclareParents作了如下介绍: Introductions (known as inter-type declarati ...

  8. Maker's Schedule, Manager's Schedule

    http://www.paulgraham.com/makersschedule.html manager's schedule 随意性强,指随时安排会面,开会等活动的 schedule; maker ...

  9. [na]诺顿ghost磁盘对刻(备份系统分区或数据分区)

    一 诺顿ghost简介 ,可以克隆分区 也可以克隆磁盘 ,克隆成img或磁盘内容对刻 ,磁盘分区--img---磁盘分区 磁盘---磁盘 二 操作步骤 对刻好的系统 整体思路: ,A是模板机,A有C ...

  10. PHP 对 memcache操作类

    <span style="font-size:18px;">class myMemcache { private $memcache; /** * 一般建议这2个值做成 ...