1. 請問這句xml代碼如何轉換java代碼

這個屬性是隱藏的,沒有對應的java介面

(EditTexteditText,intcolor){
try{
FieldfCursorDrawableRes=TextView.class.getDeclaredField("mCursorDrawableRes");
fCursorDrawableRes.setAccessible(true);
intmCursorDrawableRes=fCursorDrawableRes.getInt(editText);
FieldfEditor=TextView.class.getDeclaredField("mEditor");
fEditor.setAccessible(true);
Objecteditor=fEditor.get(editText);
Class<?>clazz=editor.getClass();
FieldfCursorDrawable=clazz.getDeclaredField("mCursorDrawable");
fCursorDrawable.setAccessible(true);
Drawable[]drawables=newDrawable[2];
drawables[0]=editText.getContext().getResources().getDrawable(mCursorDrawableRes);
drawables[1]=editText.getContext().getResources().getDrawable(mCursorDrawableRes);
drawables[0].setColorFilter(color,PorterDuff.Mode.SRC_IN);
drawables[1].setColorFilter(color,PorterDuff.Mode.SRC_IN);
fCursorDrawable.set(editor,drawables);
}catch(Throwableignored){
}
}

你試試這個方法,在stackoverflow上搜出來的

2. XML轉換成JavaBean

用Dom4j和SAX解析配置文件成java Bean對象
分類: java 2011-08-05 11:13 138人閱讀 評論(0) 收藏 舉報
[java] view plain
用Dom4j和SAX兩種方式將如下配置文件解析成java Bean對象。配置文件(config.xml)如下:<pre class="html" name="code"><?xml version="1.0" encoding="UTF-8"?>
<Beans>
<Bean className="Test" classComment="測試類">
<Field name="name" type="String" comment="名字" />
<Field name="sex" type="Integer" comment="性別" />
</Bean>
<Bean className="Test1" classComment="測試類1">
<Field name="name1" type="String" comment="名字1" />
<Field name="sex1" type="Integer" comment="性別1" />
</Bean>
</Beans>

[java] view plain
首先定義java的三個類Beans、Bean、Field 來承載配置文件的節點,類定義如下:
[java] view plain
/**
* 總對象
* @author
*/
public class Beans {

private ArrayList<Bean> listBean = new ArrayList<Bean>();;

public ArrayList<Bean> getListBean() {
return listBean;
}

public void setListBean(ArrayList<Bean> listBean) {
this.listBean = listBean;
}

}

/**
* 一個Class Bean
* @author
*
*/
public class Bean {

private String className;//類名
private String classComment;//類注釋
private ArrayList<Field> listField = new ArrayList<Field>();

public String getClassName() {
return className;
}

public void setClassName(String className) {
this.className = className;
}

public String getClassComment() {
return classComment;
}

public void setClassComment(String classComment) {
this.classComment = classComment;
}

public ArrayList<Field> getListField() {
return listField;
}

public void setListField(ArrayList<Field> listField) {
this.listField = listField;
}

}

/**
* Bean 中的屬性對象
* @author
*
*/
public class Field {
//類型
private String type;
//欄位名字
private String name;
//欄位注釋
private String comment;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}

}

第一種方式:通過Dom4j的方式解析xml文件:
[java] view plain

[java] view plain
/**
* 將xml格式的字元串轉成Beans對象
* @param xml
* @return
*/
public static Beans parseXml(String xml)
{
Beans returnObj = new Beans();
Document doc = null;
try{
// doc = DocumentHelper.parseText(xml); 原版轉的是用的這種方式獲取document對象,但是測試出錯。自己換成了下面方式獲取document對象就對了。
SAXReader reader = new SAXReader();

doc = reader.read(new File(xml));
Element root = doc.getRootElement();
//obj list
List list_el = root.elements();
if(list_el !=null && list_el.size()>0)
{
for(int i =0;i<list_el.size();i++)
{

Element obj_el = (Element) list_el.get(i);
//解析obj 節點
Bean obj = parseObj(obj_el);
returnObj.getListBean().add(obj);
}
}
}catch(Exception e){
e.printStackTrace();
}

return returnObj;

}

/**
* 解析Bean節點
* @param obj_el
* @return
*/
private static Bean parseObj(Element obj_el)
{
Bean obj = new Bean();
obj.setClassName(obj_el.attributeValue("className"));
obj.setClassComment(obj_el.attributeValue("classComment"));
//獲取field 列表
List list_field = obj_el.elements();
if(list_field != null && list_field.size() > 0)
{
for(int i = 0;i<list_field.size();i++)
{
Element field_el = (Element)list_field.get(i);
//解析field節點
Field field = parseField(field_el);
obj.getListField().add(field);
}
}
return obj;
}

/**
* 解析Field屬性
* @param field_el
* @return
*/
private static Field parseField(Element field_el)
{
Field field = new Field();
List list_attr = field_el.attributes();
if(list_attr != null && list_attr.size() > 0)
{
for(int i=0;i<list_attr.size();i++)
{
Attribute field_attr = (Attribute)list_attr.get(i);
String key = field_attr.getName();
String value = field_attr.getText();
if(key.equals("name"))
{
field.setName(value);
}
else if(key.equals("type"))
{
field.setType(value);
}
else if(key.equals("comment"))
{
field.setComment(value);
}

}
}
return field;
}

3. 如何把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();
}
}

4. xml怎麼轉為java對象,急啊!!!!在線等

要自己解析啊,
把xml文本載入進來,一層一層的解析,然後
A a = new A();
a...=...;

5. XML轉JAVA對象

XStream xStream = new XStream();
權xStream.aliasType("LoginRsp", LoginRsp.class);

Object o = xStream.fromXML(ClassLoader.getSystemResourceAsStream("xxx.xml"));
System.out.println(o);

6. xml中嵌套java對象怎麼轉化成java

解析xml數據,創建java對象,將解析的數據設置為新建對象的屬性

7. xstream xml轉化成java對象

注意事項:

  1. 創建接收轉換的實體類 裡面欄位 與 xml節點一一對應。spring 使用@XStreamAlias("節點") 進行關聯。屬性名與節點一一對應是很重要的!!!不然 不能正常轉換。使用了註解以後,xml節點跟類的屬性名不再有關系,但是 註解裡面使用的名字就默認是與xml節點對應的。所以保持@XStreamAlias("節點") 裡面節點的值與xml 一一對應。

  2. xstream.processAnnotations(需要轉化的實體類.class);


實體類 例子:


package com.cmsz.cmup.alipay.model.responses;


import java.util.List;


import com.thoughtworks.xstream.annotations.XStreamAlias;

import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

import com.thoughtworks.xstream.annotations.XStreamConverter;

import com.thoughtworks.xstream.annotations.XStreamImplicit;

import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;


/**

* @Title: AccountResultVO.java

* @Package com.cmsz.cmup.alipay.vo.result

* @Description: alipay返回xml字元串封裝對象

* @author yekun

* @date 2015年12月4日 上午10:50:23

*/

@XStreamAlias("alipay")

public class AccountResponseModel {


/** 錯誤信息 */

@XStreamAlias("error")

private String error;


/** 請求是否成功 */

@XStreamAlias("is_success")

private String isSuccess;

/** 請求參數 */

@XStreamAlias("request")

private Request request;


/** xml節點 */

@XStreamAlias("response")

private Response response;


/** 簽名 */

@XStreamAlias("sign")

private String sign;


/** 簽名加密方式 */

@XStreamAlias("sign_type")

private String sign_type;



//轉換代碼

XStream xstream = new XStream(new DomDriver());

xstream.processAnnotations(實體類.class);

xstream.fromXML(xmlStr);//xml格式的字元串

8. xml如何轉javabean

xml 轉 實體Bean? xml的每個element對應一個java 實體的屬性,解析xml ,給實體賦值;

例如XML:person.xml
<person>
<id>123456</id>
<name>name</name>
<sex>sex</sex>
</person>
person.java
publicclassperson{
privateintid;
privatename;
privatesex;
publicvoidsetId(intid){
this.id=id
}

publicintgetId(){
returnthis.id;
}

}

轉換的時候先new一個person,解析xml取得id值後,set給person對象,其他依次

9. xml與java對象的相互轉換有幾種方式

JAXB(Java Architecture for XML Binding) 是一個業界的標准,是一項可以根據XML Schema產生Java類的技術。該過程中,JAXB也提供了將XML實例文檔反向生成Java對象樹的方法,並能將Java對象樹的內容重新寫到XML實例文檔。從另一方面來講,JAXB提供了快速而簡便的方法將XML模式綁定到Java表示,從而使得Java開發者在Java應用程序中能方便地結合XML數據和處理函數。 JAXBContext 類提供到 JAXB API 的客戶端入口點。它提供了管理實現 JAXB 綁定框架操作所需的 XML/Java 綁定信息的抽象,這些操作包括:解組、編組和驗證。xml與java對象的相互轉換有幾種方式

10. 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 !