1. 如何將javabean轉換為xml
利用反射機制,自己寫方法自己轉xml。
借用jar包進行轉換,例如xstream。
推薦第二種。第一種太累,而且沒有靈活度可言。第二種可以通過註解或其他形式配置bean中的某些欄位需不需要轉xml。
2. javabean欄位如何生成特殊形式的xml 值
//1.需要 用dom4j jar包 (maven依賴
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.0</version>
</dependency>)
//2.輸出javabean的xml格式字元串
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class JavaBeanXml {
private String id;
private String name;
private Integer age;
public JavaBeanXml(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
//輸出javabean的xml格式字元串
public String getXMLString(){
Document d=DocumentHelper.createDocument();
Element root=d.addElement(this.getClass().getSimpleName());
root.addElement("id").addText(getId());
root.addElement("name").addText(getName());
root.addElement("age").addText(String.valueOf(getAge()));
d.setXMLEncoding("utf-8");
return d.asXML();
}
}
//3.測試類
public class JavaBeanXmlTest {
public static void main(String[] args) {
JavaBeanXml jxml=new JavaBeanXml("1","張三",23);
System.out.println(jxml.getXMLString());
}
}
3. 如何根據javabean中的屬性生成xml文件
用dom4j來搞,其jar包自己網上下載:
Java code
package bean;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class A {
private String id;
private String name;
private Integer age;
public A(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
//輸出javabean的xml格式字元串
public String getXMLString(){
Document d=DocumentHelper.createDocument();
Element root=d.addElement(this.getClass().getSimpleName());
root.addElement("id").addText(getId());
root.addElement("name").addText(getName());
root.addElement("age").addText(String.valueOf(getAge()));
d.setXMLEncoding("utf-8");
return d.asXML();
}
public static void main(String[] args) {
A a=new A("1","張三",23);
System.out.println(a.getXMLString());
}
}
輸出結果:
<?xml version="1.0" encoding="utf-8"?>
<A><id>1</id><name>張三</name><age>23</age></A>
4. javaBean從xml中讀取數據如何實現國際化
這個忘了
5. javabean 創建xml
我暈,你到底是創建javaBean的XML還是用javaBean創建XML啊?
如果是創建JavaBean的XML那麼就做一個JavaBean的工廠並且讀取xml文件就可以了
如果是javaBean讀取,那麼做一個xml的讀取用sax或者dom都可以啊 ???
6. JavaBean中的類如何訪問web.xml中的參數
在JavaBean中直接獲取不到,需要用到ServletConfig
java.lang.String getInitParameter(java.lang.String name)
Returns a String containing the value of the named initialization parameter, or null if the parameter does not exist. 我來補充一下:需要在javabean中得到web.xml的參數值,不同的節點有不同的訪問對象。比如得到wen.xml中<servlet></servlet>節點的值需要使用ServletConfig,而需要獲取<filter></filter>則使用FilterConfig。這些javabean的定義都是public abstract interface javax.servlet.*Config{...};然後獲取值的方式都為:String value = config.getInitParameter("參數名");
7. 如何用java讀取xml文件
1利用dom對象,直接查找標簽
2利用工具類,比如xmlbean,直接將xml映像成javabean
8. xStream javaBean轉為xml時,怎麼保留空節點
使用一個自定義的Converter:
publicclassStudent{
Stringname;
intage;
Stringteacher;
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
.......
......//
}
{
publicbooleancanConvert(Classclazz){
returnclazz.equals(Test.class);
}
publicvoidmarshal(Objectvalue,,
MarshallingContextcontext){
Studentstudent=(Student)value;
writer.startNode("name");
writer.setValue(test.getName());
writer.endNode();
writer.startNode("age");
writer.setValue(test.getAge());
writer.endNode();
writer.startNode("teacher");
Stringteacher=test.getTeacher();
if(teacher==null)
writer.setValue("");
else
writer.setValue(teacher);
writer.endNode();
}
publicObjectunmarshal(,
UnmarshallingContextcontext){
Studentstudent=newStudent();
test.setName(reader.getNodeName());
test.setAge(reader.getNodeName());
test.setTeacher(reader.getNodeName());
returnstudent;
}
}publicclassApp1{
publicstaticvoidmain(Stringargs[]){
XStreamstream=newXStream(newStaxDriver());
Studentst=newStudent();
st.setName("ABC");
t.setAge(21);
stream.registerConverter(newStudentConverter());
stream.alias("student",Student.class);
System.out.println(stream.toXML(st));
}
}
9. javaBean和xml中的bean 是一回事兒嗎
不是一回事。javabean是一種規范。就是說。spring會把你的類。介面等封裝成javabean。然後依賴注入。xml只是一種格式。
10. 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;
}