解析xml文件问题

wodehongseupan2 2012-07-11 10:55:29
我调用webservice,传回来的是一个字符串,但这个字符串的内容是xml文件那种格式。
比如:传回来的字符串
<?xml version="1.0" encoding="UTF-8"?>
........
<info>
<name>Hello</name>
<age>20</age>
</info>
........

字符串的内容就是xml文件信息,只不过使用字符串表示出来了xml文件里面的内容,
我使用SAX来解析实际的xml是可以的,但就不知道怎么解析这种字符串了,大家有好的
办法吗?我先用字符串生成实际的xml文件,然后再解析实际的xml文件?还是怎么弄啊?
纠结啊。。。。。。
...全文
160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hantianjie_ 2012-07-16
  • 打赏
  • 举报
回复
String xmlString ="XML格式字符串";
SAXReader saxReader = new SAXReader();
Document document = null;
try{
document = saxReader.read(new StringReader(xmlString));
} catch(Exception e){
e.printStackTrace();
}
Element root = document.getRootElement();
//获取节点信息
Element eInfo = root.element("info");
Element eName = info.element("name");
String name = name.getTextTrim();
回收站666 2012-07-14
  • 打赏
  • 举报
回复
使用模式匹配,也可以使用字符或字节流(存储在内存中),先写进去输出流,再用输入流传入SAX的构造中。。。
xieyongcx 2012-07-14
  • 打赏
  • 举报
回复
我就用的jdk
kittaaron 2012-07-13
  • 打赏
  • 举报
回复
用Web service返回的字串内容可以包装成javax.xml.transform.Source类型的对象,然后用你喜欢的方式(各种开源的库或者直接用JDK提供的dom api或者sax api)解析成xml对象,然后就是想干嘛干嘛。

关于javax.xml.transform.Source已知的实现有下面几种DOMSource, JAXBSource, SAXSource, StAXSource, StreamSource

怎么选择其实是无所谓的(当然各种实现可能在处理上有快慢之分,LZ有兴趣可以自己研究),推荐用StAXSource

贴几行代码
1.用DOM API
((DOMSource) source).getNode().getFirstChild(); //得到xml的根元素对象,后面的处理参照java dom api

2.用JAXB
JAXBContext respJc = JAXBContext.newInstance(RootElment.class.getPackage().getName()); //RootElment为事先定义好的跟xml文档内容匹配的对象,具体请参照JAXB文档
unmarshaller umsh = respJc.createUnmarshaller();
JAXBElement<RootElment> jaxbEle = umsh.unmarshal(source,RootElment.class);//这里的source是返回的xml文本流,也就是楼主说的XML字符串
RootElment respEle = jaxbEle.getValue(); //直接unmarshal成了我们需要的类

ccb445365969 2012-07-13
  • 打赏
  • 举报
回复
使用DOM4J,提供了接口操作XML格式的字符串的
wodehongseupan2 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

咱俩遇到的问题一样 晚上给你代码!!
[/Quote]
刚看见你的留言 我的qq:372163591
晚上加我啊!万分感谢。
未来需要奋斗 2012-07-13
  • 打赏
  • 举报
回复
可以使用dom4j 导入他的包
把字符串生成.xml文件 如取名为pageString.xml
public class 查
{
public static void main(String[] args) throws DocumentException
{
SAXReader reader = new SAXReader();
File file=new File("src/xml/描述数据.xml");
//File file=new File("D:/MyEclipse 9/dropins/artifacts.xml");
Document doc = reader.read(file);
System.out.println(doc.asXML());
// 1.找根节点
Element gen = doc.getRootElement();
//System.out.println(gen);
// 2.找 儿子
List<Element> erzis = gen.elements();
//System.out.println(erzis.size());

for (Element ez : erzis)
{
//System.out.println(ez.getName());
List<Element> szs = ez.elements();
for (Element sz : szs)
{
// System.out.println("\t" + sz.getName());
// System.out.println("路径:"+sz.getPath());
}
}
// 3.找 父节点
Element fu = erzis.get(0).getParent();
//System.out.println(fu.getName()+"-----");
//4.用XPath进行绝对路径查找
List<Element> 电影s =doc.selectNodes("美女s/美女/电影s/电影");
/*System.out.println(电影s.size());
for( Element dy : 电影s)
{
System.out.println( dy.getTextTrim());
}*/

List<Attribute> daoYan = doc.selectNodes("美女s/美女/电影s/电影/@导演");
for( Attribute a :daoYan )
{
System.out.println( a.getPath() );
}

}
}
J-bag 2012-07-12
  • 打赏
  • 举报
回复
咱俩遇到的问题一样 晚上给你代码!!
so_and_so 2012-07-12
  • 打赏
  • 举报
回复
使用dom4j
十四月的清晨 2012-07-12
  • 打赏
  • 举报
回复
XML格式固定的话可以用正则自己解析,不然就使用框架直接解析XML文件

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧