xml轉java
❶ java用XStream把xml轉換成javabean的問題
xStream可以輕易的將Java對象和xml文檔相互轉換,而且可以修改某個特定的屬性和節點名稱,而且也支持json的轉換;它們都完美支持JSON,但是對xml的支持還不是很好。一定程度上限制了對Java對象的描述,不能讓xml完全體現到對Java對象的描述。這里將會介紹xStream對JSON、XML的完美支持。xStream不僅對XML的轉換非常友好,而且提供annotation註解,可以在JavaBean中完成對xml節點、屬性的描述。以及對JSON也支持,只需要提供相關的JSONDriver就可以完成轉換。
❷ java怎樣讀取解析xml文件中的數據轉換成java對象
SAXBuildersb=newSAXBuilder();//建立構造器
Documentdoc;
try{
doc=sb.build("E:/userinfod301.xml");//讀入指定文件
Elementroot=doc.getRootElement();//獲得根節點
Listlist=root.getChildren();//將根節點下的所有ObjectInstance子節點放入List中
for(inti=0;i<list.size();i++){
List<Element>listNext=((Element)list.get(i)).getChildren();//將ObjectInstance節點下的所有Attribute放入List中
for(intj=0;j<listNext.size();j++){
Elementsub=(Element)listNext.get(j);//取得節點實例
System.out.println(sub.getAttribute("name").getValue());
System.out.println(sub.getText());
}
}
}catch(Exceptione){
e.printStackTrace();
}
❸ 100分求高手幫我將xml文件轉為java類
奮鬥了20個小時,終於完成了,本類無需導入任何額外的包,底層細節全部在本類中完成!
      說明,本類通過讀入xml文件,並把信息正確分成存入到Guird列表中。通過調用getGuirdList()將返回結果集。要使用其中的某一項,只接到對象中用方法獲取即可,希望能夠滿足樓主的需求!!
TransXml.java
import java.io.*;
import java.util.Vector;
import java.util.Scanner;
import java.io.InputStreamReader;
import java.util.LinkedList;
public class TransXml{
private String xmlAddress;
private Vector<Guird> guir;//表示一級子目錄下的Guird向量
private FileInputStream inStr;
private InputStreamReader inRea; 
private int whLayer=0;//標志表的層次,為0表示根表,為1表示第一層子表
private int whiLab=0;//表示當前標簽是第幾層
boolean isend=false;
boolean isguirs=false;
boolean isguir=false;
StringBuffer str=new StringBuffer();//表示<>中的詞
String strVul;
StringBuffer value=new StringBuffer();//表示具體類容
boolean isWorld=false;
boolean isValue=false;
boolean isSubgu=false;
boolean notEnd=true;
LinkedList<Guird> linList;
public TransXml(){
}
public TransXml(String xmlAdd){
   guir=new Vector<Guird>();
   linList=new LinkedList<Guird>();
   this.xmlAddress=xmlAdd;
   System.out.println("開始讀取xml文件");
   try{
    inStr=new FileInputStream(xmlAddress);
    inRea=new InputStreamReader(inStr);
   }catch(IOException e){
    System.out.println("Xml文件地址無效");
   }
   System.out.println("開始讀取xml文件完成!");
   Translate();
  
}
public void Translate(){
   Guird theGu=new Guird();
   while(notEnd)
   {
    int tt=-1;
    try{
     tt=inRea.read();
    }catch(IOException e){
     System.out.println("字元讀取失敗!");
    }
   
    if(tt==-1){//文件已經讀完了
     notEnd=false;
     break;
    }
   
    char ch=(char)tt;
    if(ch=='<'){
     //說明,前面如果有類容的話,內容完結
     isValue=false;//說明內容已經完了
     isWorld=true;//表示下面是<>里德內容
    }
    if(ch=='>'){
     isWorld=false;//表示括弧內的字元串結束了
    
     strVul=str.toString();//表示當前的目錄層次
    
     if(strVul.equalsIgnoreCase("guirds")){//這是配置文件正式開始的標志
      isguirs=true;
     }else if(strVul.equalsIgnoreCase("guird")){//說明已經進入guird類
      isguir=true;
     }else if(strVul.equalsIgnoreCase("id")){//進入id屬性
      isValue=true;
     }else if(strVul.equalsIgnoreCase("name")){//進入name屬性
      isValue=true;
     }else if(strVul.equalsIgnoreCase("ename")){//進入ename屬性
      isValue=true;
     }else if(strVul.equalsIgnoreCase("parentid")){//進入parentid屬性
      isValue=true;
     }else if(strVul.equalsIgnoreCase("subguirds")){//進入subguirds屬性,說明它還有一個字表
      isSubgu=true;
      linList.addLast(theGu);//做入棧操作,添加到結尾
      whLayer++;//原始的值為0,它表示當前操作guird的級數
      //那麼下面的讀取將是新的Guird類,所以要把現在的theGu保存後重新初始化
      theGu=new Guird();//初始化,後面接著用
     }else if(strVul.equalsIgnoreCase("/guirds")){//這是配置文件結束的標志
      isguirs=false;//程序已經閱讀完畢XML文件
      notEnd=false;
     }else if(strVul.equalsIgnoreCase("/guird")){//說明已經結束guird類
      isguir=false;//說明一條記錄已經完成,所以要對其存儲
      //theGu的屬性是在</標簽>前就寫入完畢了,那麼應該寫入上級目錄中,
      //如果是定定及目錄,則直接寫入給定的Vector
      if(whLayer>0){//說明還不是根目錄
       Guird tempguir=linList.getLast();
       Vector<Guird> tempqq=(Vector)tempguir.getSubGuird();
      
       if(tempqq==null){//說明前面的集合為空
        tempqq=new Vector();
       }
       tempqq.add(theGu);//集合中增加這一項
       tempguir.setSubGuird(tempqq);
       linList.removeLast();//移動原來的換新的內容
       linList.add(tempguir);
       theGu=new Guird();//重新初始化供後面使用,並不要去改變whLayer值
      }else if(whLayer==0){//這說明當前的theGu是指1級子目錄,
       guir.add(theGu);//添加一條記錄到Vector
       theGu=new Guird();// 重新初始化以便下次正確用到
      }else{
       System.out.println("xml文件標簽錯誤!");
       notEnd=false;
      }
}else if(strVul.equalsIgnoreCase("/id")){//結束id屬性
      isValue=false;
      theGu.setId(new Integer(value.toString()));
      value=new StringBuffer();
}else if(strVul.equalsIgnoreCase("/name")){//結束name屬性
      isValue=false;
      theGu.setName(value.toString());
     // System.out.println("這里寫入的名字是:"+theGu.getName());
      value=new StringBuffer();
}else if(strVul.equalsIgnoreCase("/ename")){//結束ename屬性
      isValue=false;
      theGu.setEname(value.toString());
      value=new StringBuffer();
}else if(strVul.equalsIgnoreCase("/parentid")){//結束parentid屬性
      isValue=false;
      theGu.setParentId(new Integer(value.toString()));
      value=new StringBuffer();
}else if(strVul.equalsIgnoreCase("/subguirds")){//結束subguirds屬性,字表完成
      isSubgu=false;
      //剛剛結束的這個Guird就是whLayer級子目錄
      //要判斷是根類還是那一級子目錄
      whLayer--;//表示上一級目錄
      if(whLayer>0){
       theGu=linList.getLast();//成為當前節點
       //所以當前操作對象又將是剛從LinkedListed中取出的那個
       linList.removeLast();//已經用過了,最後一個移除,相當於退棧
      }
      else if(whLayer==0){//根節點下
       theGu=linList.getLast();
       linList.removeLast();
      
      }else{
       notEnd=false;//因為whLayer不可能小於0
       System.out.println(xmlAddress+"標簽不完整!請檢查!");
       break;
      }
     }
     strVul="";
     str=new StringBuffer();//重新初始化,准備後面使用
    }
    if(isWorld==true){
     if((char)tt!='<'&&(char)tt!='>')//因為具有延時性所以要增加這個條件
      if(tt!=32&&tt!=9)//它不為空格和Tab,即在xml中標簽內的內容將忽略Tab和空格
       str.append((char)tt);
    }
    if(isValue==true){//當前是類容屬性值
     if((char)tt!='<'&&(char)tt!='>'){
      if(tt!=32&&tt!=9)//它不為空格和Tab
       value.append((char)tt);
     }
    }
    /**
    * 為什麼這里注釋掉了,因為前面以當發現value值取到最後一位後就設置isValue為false
    * 但是要當下一個</>結尾標簽完才會調用value值並進行操作,所以,value不能立刻變為空內容
    * 那麼當它被使用後,采設置新的對象是可取的
    * else{
    * value=new StringBuffer();//避免干擾下次
    * }
    */
   }
   try{
    inRea.close();
    inStr.close();
   }catch(IOException e){
    System.out.println("流關閉失敗!");
   }
}
public Vector getGuirdList(){
   return this.guir;//獲得最終的子目錄列表
}
        /**
        * 原來寫的main方法進行測試,在這里就省略了
        */
}
Xml文件中<guirds>標簽中,有幾對<guird>標簽就會返回幾條結果,當然<guird>是指在<guirds>目錄下的第一層標簽,而其他的二級<guird>標簽中的內容則存在相應的List<Guird> subGuird中。
   That's all !
❹ XML轉JAVA對象
你在網上下載一個java的xml文件處理包,然後再查「java解析xml」就會有很多的常式,xml的解析器有很多,都是把XML解析成DOM樹形結構,直接讀取屬性值,非常簡單的。然後你建立一個類,構建對象把這個屬性賦值給對象屬性。
❺ 如何把這段xml轉換成java中的string
如果你要把這個xml轉成javabean的話可以寫個類 既然都已經是String類型了就直接wirte吧
❻ 如何把xml內容轉換為java格式
使用XStream完成 java 類與 XML 互換。
下面代碼實現了以下4種基本功能:
1. object類型轉換為xml類型,在控制台列印
2. xml類型轉換為object類型,在控制台列印
3. 將object類型轉換為xml類型,並寫入XML文件
4. 讀取XML文件,載入進相應Object類型
====================================================
1。載入 XStream 需要的jar包 xstream-1.4.2.jar
xpp3_min-1.1.4c.jar
xmlpull-1.1.3.1.jar
2。創建實體類User.java
package com.entity; 
/** 
* 實體類 
*/ 
public class User { 
private String userName; 
private String passWord; 
private String registeredTime; 
public User() { } 
public User(String userName, String passWord, String registeredTime) { 
this.userName = userName; 
this.passWord = passWord; 
this.registeredTime = registeredTime; 
} 
public String getUserName() { 
return userName; 
} 
public void setUserName(String userName) { 
this.userName = userName; 
} 
public String getPassWord() { 
return passWord; 
} 
public void setPassWord(String passWord) { 
this.passWord = passWord; 
} 
public String getRegisteredTime() { 
return registeredTime; 
} 
public void setRegisteredTime(String registeredTime) { 
this.registeredTime = registeredTime; 
} 
} 
3。編寫功能實現類
package com.switcher; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import com.entity.User; 
import com.thoughtworks.xstream.XStream; 
/** 
* 
* 使用 XStream不用任何映射就能實現多數 Java 對象的序列化。 
* 在生成的 XML中對象名變成了元素名,類中的字元串組成了 XML中的元素內容。 
* 使用 XStream 序列化的類不需要實現 Serializable 介面。 
* XStream 是一種序列化工具而不是數據綁定工具 
* 不能從XML 或者 XML Schema Definition (XSD) 文件生成類。 
*/ 
public class SwitchXML { 
/* 
* XStream 不關心序列化/逆序列化的類的欄位的可見性。 
* 序列化/逆序列化類的欄位不需要 getter 和 setter 方法。 
* 序列化/逆序列化的類不需要有默認構造函數。 
*/ 
private XStream xStream = new XStream(); 
private String xmlPath = "D:/userdata.xml"; 
// 1. obj -> xml(object類型轉換為xml類型) 
public String printXML(User user) { 
System.out.println("obj -> xml"); 
String xml = xStream.toXML(user); 
System.out.println(xml); 
return xml; 
} 
// 2. xml->obj(xml類型轉換為object類型,並列印) 
public void printObj(String xml) { 
System.out.println("xml -> obj"); 
User u = (User) xStream.fromXML(xml); 
System.out.println(u.getUserName() + " " + u.getPassWord() + " " + u.getRegisteredTime()); 
} 
// 3. 將object類型轉換為xml類型,並寫入XML文件(其他格式也可以,比如txt文件) 
public void writerXML(User user) { 
try { 
FileOutputStream fs = new FileOutputStream(xmlPath); 
xStream.toXML(user, fs); 
} catch (FileNotFoundException e) { 
e.printStackTrace(); 
} 
} 
// 4. 讀取XML文件,載入進相應Object類型 
public void readerXML() { 
User user = new User(); 
FileInputStream fis = null; 
try { 
fis = new FileInputStream(xmlPath); 
} catch (FileNotFoundException e) { 
e.printStackTrace(); 
} 
xStream.fromXML(fis, user); 
// 列印對象信息 
System.out.println(user.toString()); 
// 列印對象的屬性值 
System.out.println(user.getUserName() + "-" + user.getPassWord() + "-" 
+ user.getRegisteredTime()); 
} 
public static void main(String[] args) { 
// 用戶名 
String username = "admin"; 
// 密碼 
String password = "admin"; 
// 注冊時間 
Date now = new Date(); 
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); 
String registeredtime = format.format(now); 
User user = new User(username, password, registeredtime); 
SwitchXML switchXML = new SwitchXML(); 
// 1. object類型轉換為xml類型,在控制台列印 
String xml = switchXML.printXML(user); 
System.out.println("---------------------"); 
// 2. xml類型轉換為object類型,在控制台列印 
switchXML.printObj(xml); 
System.out.println("---------------------"); 
// 3. 將object類型轉換為xml類型,並寫入XML文件 
switchXML.writerXML(user); 
System.out.println("---------------------"); 
// 4. 讀取XML文件,載入進相應Object類型 
switchXML.readerXML(); 
} 
}
❼ 如何將xml文件轉變成java對象
首先 java是面向對象的編程語言,所以你要理解面向對象的思想。在這個前提下我們可以理解 文件 本身就是java的對象File,而xml只是File類中對象的一種實例。你可以創建一個File 把你的xml的路徑傳入這個對象的有參構造,這樣就實例化了一個xml文件類的對象
❽ xml怎麼轉為java對象,急啊!!!!在線等
要自己解析啊,
把xml文本載入進來,一層一層的解析,然後
A a = new A();
a...=...;
❾ 如何創建xstream的註解工廠類,將xml轉換成java對象
本文記錄一下使用xstream這個api的註解特性對Java對象與XML字元串相互轉換的一些代碼示例。
    我們很多人都處理過XML文件,也有很多非常成熟的第三方開源軟體。如:jdom、dom4j等。雖然他們的功能非常強大,但在使用上還是有點不那麼習慣。對於格式比較固定的XML文檔,它的結構沒有變化或是很少變化,這時將它轉換成我們熟悉的Java對象來操作的話,會使工作變得更容易一些,而xstream正好可以滿足這一點。
    本文所用xstream的版本為:1.4.7
   <dependency>
       <groupId>com.thoughtworks.xstream</groupId>
       <artifactId>xstream</artifactId>
       <version>1.4.7</version>
   </dependency>
    還是以之前的book XML為例,先上代碼。
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
@XStreamAlias("book")
public class Book {
    // 別名註解,這個別名就是XML文檔中的元素名,Java的屬性名不一定要與別名一致
    @XStreamAlias("name")
    private String name;
    
    @XStreamAlias("author")
    private String author;
    
    // 屬性註解,此price就是book的屬性,在XML中顯示為:<book price="108">
    @XStreamAsAttribute()
    @XStreamAlias("price")
    private String price;
    省略get和set方法
}
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("books")
public class Books {
    // 隱式集合,加上這個註解可以去掉book集合最外面的<list></list>這樣的標記
    @XStreamImplicit
    private List<Book> list;
    省略get和set方法
}
