xml字符串解析java
1. 求教大神,我新建的java webservice 从客户端传过来的xml格式字符串 怎么解析
如果是你自己练手,怎么解析都可以,dom什么的,甚至可以自己从字符串里读取需要的内容。
实际应用中,我是这样做的:
1 定义 .xsd 文件,就是xml的定义文件。
2 服务器端 用jaxb把 .xsd 文件转换成 .java 文件。
3 把 .xsd 给客户端,客户端自己转换成 .java 文件。(或者直接把 .java 文件给客户端)
4 客户端用.java 文件产生 object,然后set方法把object的内容添满。
5 客户端 Jaxb Unmarshaller object 得到xml,这个xml通过webService传到server。
6 服务器得到xml, Jaxb Marshaller xml 得到 object。
7 服务器处理 object。
2. java 解析 xml字符串 取子节点数值
使用dom4j吧
大致的代码是:
Document doc = DocumentHelper.parseText(sss);
Element root = doc.getRoot();//或许是doc.rootElement();,这里获取到的是process节点
Iterator<?> iter = root.elementIterator("task");//这里是task节点的迭代器,因为有多个task,所以使用迭代器,如果是一个节点的话,就使用root.element("task')就行了
while(iter.hasNext()) {
Element e = iter.next();//这里遍历task节点
String bb = e.attributeValue("bb");//你要的bb的值,不知道是attributeText()还是attributeValue(),记不清了。。。自己试试吧
}
3. java如何解析xml格式的字符串
使用dom4j,在网络下搜一个dom4j包,然后在网上找个例子看dom4j操作xml的使用方法,很简单的。
4. java 解析一个xml链接怎么解析
先从连接里读取出字符串,然后按后边方法解析。
String XML;//要解析的XML字符串
//将字符串转化为UTF-8格式的字节形式,这里的UTF-8不能省略,否则可能会报如下错误: [Fatal Error] :1:327: Invalid byte 1 of 1-byte UTF-8 sequence
InputStream is=new ByteArrayInputStream(XML.getBytes("UTF-8"));
接下来就可以解析了
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(is);
5. java解析XML字符串
你这种写法标签都已经关闭了,当然用getText()获取不到标签内的文本节点的值了.
注意,<a/> 这个标签已经关闭了.你要获取它后面的值,只能通过<p>节点来遍历了,
解决方法:<a value="a1" /> ,另外如果没解决,最好把源代码发下来看下
6. 在Java中如何读取XML字符串的元素值
java读取xml节点元素,主要使用java提供的解析xml的工具类SAXParserFactory,如下代码:
package xml.xmlreader;import java.io.File;import java.net.URL;import java.util.Properties;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;public class CFGParser {//解析xml文件的工具类 private Properties props; public Properties getProps() { return props; } public void setProps(Properties props) { this.props = props; } public void parse(String filename) throws Exception { CFGHandler handler = new CFGHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); factory.setValidating(false); SAXParser parser = factory.newSAXParser(); URL confURL = super.getClass().getClassLoader().getResource(filename); if (confURL == null) { System.out.println("Can't find configration file."); return; } try { parser.parse(confURL.toString(), handler); this.props = handler.getProps(); } finally { factory = null; parser = null; handler = null; } } public void parseFile(String filename) throws Exception { CFGHandler handler = new CFGHandler(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); factory.setValidating(false); SAXParser parser = factory.newSAXParser(); File f = new File(filename); if ((f == null) || (!f.exists())) return; try { parser.parse(f, handler); this.props = handler.getProps(); } finally { factory = null; parser = null; handler = null; } }}package xml.xmlreader;import java.util.Properties;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler; public class CFGHandler extends DefaultHandler{ private Properties props; private String currentSet; private String currentName; private StringBuffer currentValue = new StringBuffer(); public CFGHandler() { this.props = new Properties(); } public Properties getProps() { return this.props; } public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { this.currentValue.delete(0, this.currentValue.length()); this.currentName = qName; } public void characters(char[] ch, int start, int length) throws SAXException { this.currentValue.append(ch, start, length); } public void endElement(String uri, String localName, String qName) throws SAXException { this.props.put(qName.toLowerCase(), this.currentValue.toString().trim()); }}xml文件 <?xml version="1.0" encoding="UTF-8"?><xml-body> <refresh_userlist desc="用户列表刷新间隔时间(秒)">6</refresh_userlist> <refresh_message desc="短消息刷新间隔时间(秒)">10</refresh_message> <morningbegin desc="上午上班时间">23:00</morningbegin> <morningend desc="上午下班时间">12:00</morningend> <afternoonbegin desc="下午上班时间">18:00</afternoonbegin></xml-body>jsp获取各个节点的值:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html> <jsp:useBean id="cfgp" scope="page" class="xml.xmlreader.CFGParser"></jsp:useBean> <body> <% cfgp.parse("kaoqin.xml"); Properties pro = cfgp.getProps(); String stTime = pro.getProperty("morningbegin"); String edTime = pro.getProperty("morningend"); String afternoonbegin = pro.getProperty("afternoonbegin"); out.println(stTime+"\n"+edTime+"\n"+afternoonbegin); System.out.println(stTime+"\n"+edTime+"\n"+afternoonbegin); %> </body></html>
7. java 解析xml格式的字符串
给你讲下思路,就是通过name找到key这个节点,通过key节点获得key节点的父节点也就是Item
再通过Item获取它子节点Value 获得Value了就获得它的文本值就行 具体代码得翻翻笔记了,现在真敲不出来.
8. java xml格式字符串解析
package test;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
/**
* 使用JDOM实现XML解析,jar包:jdom-2.0.5.jar
* @author zhurongfu
*
*/
public class JdomTest {
public static void parseXml (File file) throws JDOMException, IOException{
SAXBuilder sax = new SAXBuilder();
Document doc = sax.build(file);
Element root = doc.getRootElement();
parseElement(root);
}
private static void parseElement(Element element) {
// TODO Auto-generated method stub
List<Element> elementList = element.getChildren();
for(Element e:elementList){
if(e.getChildren().size() > 0){
parseElement(e);
}else {
String elementName = e.getName();
if("id".equals(elementName)){
System.out.println("a的值为:"+e.getValue());
}else if("destaddr".equals(elementName)) {
System.out.println("b的值为:"+e.getValue());
}else if("status".equals(elementName)){
System.out.println("c的值为:"+e.getValue());
}
}
}
}
public static void main(String[] args) throws JDOMException, IOException {
// TODO Auto-generated method stub
File file = new File("test.xml");
parseXml(file);
}
}
9. Java解析XML字符串
使用第三发组件,我用的是dom4j.jar
代码如下:
import java.io.File;
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;
public class TestArray{
private File file;
public TestArray(File file){
this.file=file;
}
public void read() throws DocumentException{
//获得解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document doc = sr.read(file);
//获得xml根元素
Element root = doc.getRootElement();
//获得根元素迭代器
Iterator<Element> ir = root.elementIterator();
//迭代根元素,看根元素下有哪些其他元素
while (ir.hasNext()) {
//第一个元素
Element element = (Element) ir.next();
//判断是哪个元素,方法应该没用错,错了就不好意思了
if(element.getName().equals("flag")){
//获取此元素属性值
String code = element.attributeValue("code");
String msg = element.attributeValue("msg");
}else{
String totalCount = element.attributeValue("totalCount");
Iterator<Element> ir1 = element.elementIterator();
//如果此元素下还有别的元素,则继续迭代
while(ir1.hasNext()){
Element commentary = (Element) ir1.next();
String type = commentary.attributeValue("type");
}
}
}
}
}