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");
}
}
}
}
}