Jibx handles XML

黄舟
Release: 2017-02-18 15:18:23
Original
1734 people have browsed it

I have introduced the json-lib framework before, online blog post: //m.sbmmt.com/

and the Jackson framework, online blog post: //m.sbmmt.com/

They can all complete the conversion of Java objects to XML, but they are not so perfect yet.

There is also XStream's support for JSON and XML, which can perfectly convert JSON or XML. Online blog:

//m.sbmmt.com/

and introduce Castor to complete the conversion of Java objects to xml. Online blog: //m.sbmmt.com/

Jaxb2 completes the conversion of xml, online blog: //m.sbmmt.com/

Jibx converts Java objects It is relatively more responsible. It not only needs to configure xml but also generate corresponding jar files and xsd files. Let's take a look at how Jibx converts Java to XML.

1.Preparation

1. Preparation of resources

a) Official example: http://www.php .cn/

//m.sbmmt.com/

b) Jar download: //m.sbmmt.com/

c) Depend on jar The package is as follows:

Jibx handles XML

2. Program preparation code



##

package com.hoo.test;
Copy after login


Copy after login
Copy after login

import java.io.IOException;
Copy after login

import java.io.StringReader;
Copy after login

import java.io.StringWriter;
Copy after login

import java.util.ArrayList;
Copy after login

import java.util.HashMap;
Copy after login

import java.util.List;
Copy after login

import org.jibx.runtime.BindingDirectory;
Copy after login

import org.jibx.runtime.IBindingFactory;
Copy after login

import org.jibx.runtime.IMarshallingContext;
Copy after login

import org.jibx.runtime.IUnmarshallingContext;
Copy after login

import org.jibx.runtime.JiBXException;
Copy after login

import org.junit.After;
Copy after login

import org.junit.Before;
Copy after login

import org.junit.Test;
Copy after login

import com.hoo.entity.Account;
Copy after login

import com.hoo.entity.AccountArray;
Copy after login

import com.hoo.entity.Birthday;
Copy after login

import com.hoo.entity.ListBean;
Copy after login

import com.hoo.entity.MapBean;
Copy after login


Copy after login
Copy after login

/**
Copy after login

* function: Jibx转换Java到XML
Copy after login

* @author hoojo
Copy after login

* @createDate 2011-4-25 下午06:47:33
Copy after login

* @file JibxTest.java
Copy after login

* @package com.hoo.test
Copy after login

* @project WebHttpUtils
Copy after login

* @blog //m.sbmmt.com/
Copy after login

* @email hoojo_@126.com
Copy after login

* @version 1.0
Copy after login

*/
Copy after login

public class JibxTest {
Copy after login

private IBindingFactory factory = null;
Copy after login


Copy after login
Copy after login
Copy after login

private StringWriter writer = null;
Copy after login

private StringReader reader = null;
Copy after login


Copy after login
Copy after login
Copy after login

private Account bean = null;
Copy after login


Copy after login
Copy after login
Copy after login

@Before
Copy after login

public void init() {
Copy after login

bean = new Account();
Copy after login

bean.setAddress("北京");
Copy after login

bean.setEmail("email");
Copy after login

bean.setId(1);
Copy after login

bean.setName("jack");
Copy after login

Birthday day = new Birthday();
Copy after login

day.setBirthday("2010-11-22");
Copy after login

bean.setBirthday(day);
Copy after login


Copy after login

try {
Copy after login
Copy after login

factory = BindingDirectory.getFactory(Account.class);
Copy after login

} catch (JiBXException e) {
Copy after login

e.printStackTrace();
Copy after login
Copy after login

}
Copy after login
Copy after login

}
Copy after login


Copy after login
Copy after login
Copy after login

@After
Copy after login

public void destory() {
Copy after login

bean = null;
Copy after login

try {
Copy after login
Copy after login

if (writer != null) {
Copy after login

writer.flush();
Copy after login

writer.close();
Copy after login

}
Copy after login

if (reader != null) {
Copy after login

reader.close();
Copy after login

}
Copy after login

} catch (IOException e) {
Copy after login

e.printStackTrace();
Copy after login
Copy after login

}
Copy after login
Copy after login

System.gc();
Copy after login

}
Copy after login
Copy after login
Copy after login


Copy after login
Copy after login
Copy after login

public void fail(Object o) {
Copy after login

System.out.println(o);
Copy after login

}
Copy after login
Copy after login
Copy after login


Copy after login
Copy after login
Copy after login

public void failRed(Object o) {
Copy after login

System.err.println(o);
Copy after login

}
Copy after login
Copy after login
Copy after login

}
Copy after login


##IBindingFactory is a factory interface, through the getFactory of BindingDirectory Factory methods can obtain an object. Then through this project, the context for converting the xml document can be obtained.

二、转换JavaXML、转换XMLJava

1、 转换JavaEntity对象

a) 首先看看Account、Birthday的代码

package com.hoo.entity; public class Account { private int id; private String name; private String email; private String address; private Birthday birthday; //getter、setter @Override public String toString() { return this.id + "#" + this.name + "#" + this.email + "#" + this.address + "#" + this.birthday; } }
Copy after login


Birthday

package com.hoo.entity; public class Birthday { private String birthday; public Birthday(String birthday) { super(); this.birthday = birthday; } //getter、setter public Birthday() {} @Override public String toString() { return this.birthday; } }
Copy after login


b) 程序代码



@Test
Copy after login
Copy after login

public void bean2XML() {
Copy after login

try {
Copy after login
Copy after login

writer = new StringWriter();
Copy after login

// marshal 编组
Copy after login
Copy after login

IMarshallingContext mctx = factory.createMarshallingContext();
Copy after login
Copy after login

mctx.setIndent(2);
Copy after login
Copy after login

mctx.marshalDocument(bean, "UTF-8", null, writer);
Copy after login

fail(writer);
Copy after login
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login

reader = new StringReader(writer.toString());
Copy after login
Copy after login

//unmarshal 解组
Copy after login
Copy after login

IUnmarshallingContext uctx = factory.createUnmarshallingContext();
Copy after login
Copy after login

Account acc = (Account) uctx.unmarshalDocument(reader, null);
Copy after login

fail(acc);
Copy after login

} catch (Exception e) {
Copy after login
Copy after login

e.printStackTrace();
Copy after login
Copy after login

}
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

}
Copy after login
Copy after login
Copy after login


这样还不够,复杂的东西还在后面。Jibx转换XML文档还要经过一系列复杂的程序。

c) 首先,要写bind.xml和schema。不过还好,官方有提高工具类可以用。

org.jibx.binding.generator.BindGen或org.jibx.binding.BindingGenerator这两个类都可以,用法如下:

首先用dos进入当前工程目录,然后执行命令:E:/Study/WebHttpUtils>java -cp bin;lib/jibx-tools.jar;lib/log4j-1.2.16.jar org.jibx.binding.generator.BindGen -b bind.xml com.hoo.entity.Account

上面的java 是运行某个程序 –cp是依赖的classpath路径的jar、zip等文件,-b 是输出文件名称,是BindGen类的参数。这样会在当前工程目录中生成bind.xml和entity.xsd文件。先看看这2个文件

bind.xml



?xml version="1.0" encoding="UTF-8"?>
Copy after login
Copy after login
Copy after login
Copy after login

binding value-style="attribute">
Copy after login
Copy after login
Copy after login

mapping class="com.hoo.entity.Account" name="account">
Copy after login

value name="id" field="id"/>
Copy after login

value style="element" name="name" field="name" usage="optional"/>
Copy after login

value style="element" name="email" field="email" usage="optional"/>
Copy after login

value style="element" name="address" field="address" usage="optional"/>
Copy after login

structure field="birthday" usage="optional" name="birthday">
Copy after login

value style="element" name="birthday" field="birthday" usage="optional"/>
Copy after login

/structure>
Copy after login

/mapping>
Copy after login

/binding>
Copy after login


entity.xsd文件

xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://hoo.com/entity" elementFormDefault="qualified" targetNamespace="http://hoo.com/entity"> xs:element type="tns:account" name="account"/> xs:complexType name="account"> xs:sequence> xs:element type="xs:string" name="name" minOccurs="0"/> xs:element type="xs:string" name="email" minOccurs="0"/> xs:element type="xs:string" name="address" minOccurs="0"/> xs:element name="birthday" minOccurs="0"> xs:complexType> xs:sequence> xs:element type="xs:string" name="birthday" minOccurs="0"/> /xs:sequence> /xs:complexType> /xs:element> /xs:sequence> xs:attribute type="xs:int" use="required" name="id"/> /xs:complexType> /xs:schema>
Copy after login


上面最重要的就是bind.xml文件了,下面编译的时候需要这个文件。Xsd文件可以根据这个文件的内容生成Java的Entity类代码。

执行完命令后,没有错误就可以运行下面一段命令了。运行命令:

E:/Study/WebHttpUtils>java -cp bin;lib/jibx-bind.jar org.jibx.binding.Compile -v bind.xml

-v是绑定文件的名称

运行后,有如下结果:

Jibx handles XML

d) 然后你就可以运行上面的Java的Junit测试程序了,运行后结果如下:

?xml version="1.0" encoding="UTF-8"?> account xmlns="http://hoo.com/entity" id="1"> name>jack/name> email>email/email> address>北京/address> birthday> birthday>2010-11-22/birthday> /birthday> /account> 1#jack#email#北京#2010-11-22
Copy after login


你还可以用命令来查看某个已经生成bind、schema文件的信息,如:

java -cp bin;lib/jibx-run.jar org.jibx.runtime.PrintInfo -c com.hoo.entity.Account

结果如下:

Jibx handles XML

e) 注意,有时候会出现异常信息,如:java.lang.NoSuchFieldException: JiBX_bindingXXXX就要重复下面的命令就可以了。

java -cp bin;lib/jibx-bind.jar org.jibx.binding.Compile -v bind.xml

2、 转换带List集合属性的JavaBean

a) 程序代码



@Test
Copy after login
Copy after login

public void listBean2XML() {
Copy after login

try {
Copy after login
Copy after login

ListBean listBean = new ListBean();
Copy after login

Listlist = new ArrayList();
Copy after login

list.add(bean);
Copy after login

bean = new Account();
Copy after login

bean.setAddress("china");
Copy after login

bean.setEmail("tom@125.com");
Copy after login

bean.setId(2);
Copy after login

bean.setName("tom");
Copy after login

Birthday day = new Birthday("2010-11-22");
Copy after login

bean.setBirthday(day);
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login

list.add(bean);
Copy after login

listBean.setList(list);
Copy after login


Copy after login
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login

writer = new StringWriter();
Copy after login

factory = BindingDirectory.getFactory(ListBean.class);
Copy after login

// marshal 编组
Copy after login
Copy after login

IMarshallingContext mctx = factory.createMarshallingContext();
Copy after login
Copy after login

mctx.setIndent(2);
Copy after login
Copy after login

mctx.marshalDocument(listBean, "UTF-8", null, writer);
Copy after login

fail(writer);
Copy after login
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login

reader = new StringReader(writer.toString());
Copy after login
Copy after login

//unmarshal 解组
Copy after login
Copy after login

IUnmarshallingContext uctx = factory.createUnmarshallingContext();
Copy after login
Copy after login

listBean = (ListBean) uctx.unmarshalDocument(reader, null);
Copy after login


Copy after login
Copy after login

fail(listBean.getList().get(0));
Copy after login

fail(listBean.getList().get(1));
Copy after login

} catch (Exception e) {
Copy after login
Copy after login

e.printStackTrace();
Copy after login
Copy after login

}
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

}
Copy after login
Copy after login
Copy after login


b) ListBean代码



package com.hoo.entity;
Copy after login
Copy after login
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

import java.util.List;
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

public class ListBean {
Copy after login

private String name;
Copy after login

private List list;
Copy after login

}
Copy after login
Copy after login


c) 生成bind.xml

执行dos命令:

java -cp bin;lib/jibx-tools.jar;lib/log4j-1.2.16.jar org.jibx.binding.BindingGenerator -f bind.xml com.hoo.entity.ListBean

输出:

Jibx handles XML

d) 执行完后会生产bind.xml

Bind文件



?xml version="1.0" encoding="UTF-8"?>
Copy after login
Copy after login
Copy after login
Copy after login

binding value-style="attribute">
Copy after login
Copy after login
Copy after login

mapping class="com.hoo.entity.ListBean" name="list-bean">
Copy after login

value style="element" name="name" field="name" usage="optional"/>
Copy after login

collection field="list" usage="optional" factory="org.jibx.runtime.Utility.arrayListFactory"/>
Copy after login

/mapping>
Copy after login

/binding>
Copy after login
Copy after login


e) 运行Compile工具类

在运行前,一定要将最先前运行的Account那个类的bind.xml文件的内容加入到现在这个bind.xml中,因为ListBean依赖了Account这个类。

命令如下:

java -cp bin;lib/jibx-bind.jar org.jibx.binding.Compile -v bind.xml

运行后你可以看到最后出现这个

Jibx handles XML

f) 运行Test程序,结果如下:

?xml version="1.0" encoding="UTF-8"?> list-bean> account id="1"> name>jack/name> email>email/email> address>北京/address> birthday> birthday>2010-11-22/birthday> /birthday> /account> account id="2"> name>tom/name> email>tom@125.com/email> address>china/address> birthday> birthday>2010-11-22/birthday> /birthday> /account> /list-bean> 1#jack#email#北京#2010-11-22 2#tom#tom@125.com#china#2010-11-22
Copy after login

3、 转换Java对象数组

a) Test程序

/** * function:转换对象数组 * @author hoojo * @createDate 2011-4-26 下午05:32:03 */ @Test public void arrayBean2XML() { try { Account[] acc = new Account[2]; acc[0] = bean; bean = new Account(); bean.setName("tom"); bean.setId(223); acc[1] = bean; AccountArray array = new AccountArray(); array.setAccounts(acc); writer = new StringWriter(); factory = BindingDirectory.getFactory(AccountArray.class); // marshal 编组 IMarshallingContext mctx = factory.createMarshallingContext(); mctx.setIndent(2); mctx.marshalDocument(array, "UTF-8", null, writer); fail(writer); reader = new StringReader(writer.toString()); //unmarshal 解组 IUnmarshallingContext uctx = factory.createUnmarshallingContext(); array = (AccountArray) uctx.unmarshalDocument(reader, null); fail(array.getAccounts()[0]); fail(array.getAccounts()[1]); } catch (Exception e) { e.printStackTrace(); } }
Copy after login


b) AccountArray代码



package com.hoo.entity;
Copy after login
Copy after login
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

public class AccountArray {
Copy after login

private Account[] accounts;
Copy after login

private int size;
Copy after login

public int getSize() {
Copy after login

size = accounts.length;
Copy after login

return size;
Copy after login

}
Copy after login
Copy after login
Copy after login

public void setSize(int size) {
Copy after login

this.size = size;
Copy after login

}
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

public Account[] getAccounts() {
Copy after login

return accounts;
Copy after login

}
Copy after login
Copy after login
Copy after login

public void setAccounts(Account[] accounts) {
Copy after login

this.accounts = accounts;
Copy after login

}
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

}
Copy after login
Copy after login
Copy after login


c) 运行命令生成bind.xml文件

命令如下:

java -cp bin;lib/jibx-tools.jar;lib/log4j-1.2.16.jar org.jibx.binding.BindingGenerator -f bind.xml com.hoo.entity.Account com.hoo.entity.AccountArray

因为AccountArray依赖Account,所以后面带2个类

Jibx handles XML

d) 运行Compile命令

java -cp bin;lib/jibx-bind.jar org.jibx.binding.Compile -v bind.xml

e) 执行完后,就可以运行Test程序了,结果如下



?xml version="1.0" encoding="UTF-8"?>
Copy after login
Copy after login
Copy after login
Copy after login

account-array size="0">
Copy after login

account id="1">
Copy after login

name>jack/name>
Copy after login

email>email/email>
Copy after login

address>北京/address>
Copy after login

birthday>
Copy after login

birthday>2010-11-22/birthday>
Copy after login

/birthday>
Copy after login

/account>
Copy after login

account id="223">
Copy after login

name>tom/name>
Copy after login

/account>
Copy after login

/account-array>
Copy after login

1#jack#email#北京#2010-11-22
Copy after login

223#tom#null#null#null
Copy after login


4、 转换带Map结合的JavaEntity对象

a) Test代码

/** * function:转换Map集合 * @author hoojo * @createDate 2011-4-26 下午05:40:34 */ @Test public void mapBean2XML() { try { MapBean mapBean = new MapBean(); HashMapmap = new HashMap(); map.put("No1", bean); bean = new Account(); bean.setAddress("china"); bean.setEmail("tom@125.com"); bean.setId(2); bean.setName("tom"); Birthday day = new Birthday("2010-11-22"); bean.setBirthday(day); map.put("No2", bean); mapBean.setMap(map); factory = BindingDirectory.getFactory(MapBean.class); writer = new StringWriter(); // marshal 编组 IMarshallingContext mctx = factory.createMarshallingContext(); mctx.setIndent(2); mctx.marshalDocument(mapBean, "UTF-8", null, writer); fail(writer); reader = new StringReader(writer.toString()); //unmarshal 解组 IUnmarshallingContext uctx = factory.createUnmarshallingContext(); mapBean = (MapBean) uctx.unmarshalDocument(reader, null); fail(mapBean.getMap()); fail(mapBean.getMap().get("No1")); fail(mapBean.getMap().get("No2")); } catch (Exception e) { e.printStackTrace(); } }
Copy after login


b) MapBean代码



package com.hoo.entity;
Copy after login
Copy after login
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

import java.util.HashMap;
Copy after login


Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

public class MapBean {
Copy after login

private HashMapmap;
Copy after login


Copy after login

public HashMapgetMap() {
Copy after login

return map;
Copy after login

}
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

public void setMap(HashMapmap) {
Copy after login

this.map = map;
Copy after login

}
Copy after login
Copy after login
Copy after login

}
Copy after login
Copy after login


c) 生成bind.xml,命令如下

E:/Study/WebHttpUtils>java -cp bin;lib/jibx-tools.jar;lib/log4j-1.2.16.jar org.jibx.binding.BindingGenerator -f bind.xml com.hoo.entity.Account com.hoo.entity.MapBean

运行后,会生产bind.xml;修改bind.xml内容如下:



?xml version="1.0" encoding="UTF-8"?>
Copy after login
Copy after login
Copy after login
Copy after login

binding value-style="attribute">
Copy after login
Copy after login
Copy after login

mapping class="com.hoo.entity.Account" name="account">
Copy after login

value name="id" field="id" />
Copy after login

value style="element" name="name" field="name" usage="optional" />
Copy after login

value style="element" name="email" field="email" usage="optional" />
Copy after login

value style="element" name="address" field="address" usage="optional" />
Copy after login

structure field="birthday" usage="optional" name="birthday">
Copy after login

value style="element" name="birthday" field="birthday" usage="optional" />
Copy after login

/structure>
Copy after login

/mapping>
Copy after login

mapping class="com.hoo.entity.MapBean" name="map-bean">
Copy after login

structure field="map" usage="optional" name="map"
Copy after login

marshaller="com.hoo.util.HashMapper" unmarshaller="com.hoo.util.HashMapper">
Copy after login

/structure>
Copy after login

/mapping>
Copy after login

/binding>
Copy after login
Copy after login


注意上面的MapBean的structure元素的内容是经过修改的。一定要带上marshaller或unmarshaller,不然无法转换HashMap的。

d) HashMapper代码

package com.hoo.util; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.jibx.runtime.IAliasable; import org.jibx.runtime.IMarshallable; import org.jibx.runtime.IMarshaller; import org.jibx.runtime.IMarshallingContext; import org.jibx.runtime.IUnmarshaller; import org.jibx.runtime.IUnmarshallingContext; import org.jibx.runtime.JiBXException; import org.jibx.runtime.impl.MarshallingContext; import org.jibx.runtime.impl.UnmarshallingContext; /** * function://m.sbmmt.com/ * @file HashMapper.java * @package com.hoo.util * @project WebHttpUtils * @blog //m.sbmmt.com/ * @email hoojo_@126.com * @version 1.0 */ public class HashMapper implements IMarshaller, IUnmarshaller, IAliasable { private static final String SIZE_ATTRIBUTE_NAME = "size"; private static final String ENTRY_ELEMENT_NAME = "entry"; private static final String KEY_ATTRIBUTE_NAME = "key"; private static final int DEFAULT_SIZE = 10; private String m_uri; private int m_index; private String m_name; public HashMapper() { m_uri = null; m_index = 0; m_name = "hashmap"; } public HashMapper(String uri, int index, String name) { m_uri = uri; m_index = index; m_name = name; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#isExtension(int) */ public boolean isExtension(int index) { return false; } /* (non-Javadoc) * @see org.jibx.runtime.IMarshaller#marshal(java.lang.Object, * org.jibx.runtime.IMarshallingContext) */ public void marshal(Object obj, IMarshallingContext ictx) throws JiBXException { // make sure the parameters are as expected if (!(obj instanceof HashMap)) { throw new JiBXException("Invalid object type for marshaller"); } else if (!(ictx instanceof MarshallingContext)) { throw new JiBXException("Invalid object type for marshaller"); } else { // start by generating start tag for container MarshallingContext ctx = (MarshallingContext)ictx; HashMap map = (HashMap)obj; ctx.startTagAttributes(m_index, m_name). attribute(m_index, SIZE_ATTRIBUTE_NAME, map.size()). closeStartContent(); // loop through all entries in hashmap Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry)iter.next(); ctx.startTagAttributes(m_index, ENTRY_ELEMENT_NAME); if (entry.getKey() != null) { ctx.attribute(m_index, KEY_ATTRIBUTE_NAME, entry.getKey().toString()); } ctx.closeStartContent(); if (entry.getValue() instanceof IMarshallable) { ((IMarshallable)entry.getValue()).marshal(ctx); ctx.endTag(m_index, ENTRY_ELEMENT_NAME); } else { throw new JiBXException("Mapped value is not marshallable"); } } // finish with end tag for container element ctx.endTag(m_index, m_name); } } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#isPresent(org.jibx.runtime.IUnmarshallingContext) */ public boolean isPresent(IUnmarshallingContext ctx) throws JiBXException { return ctx.isAt(m_uri, m_name); } /* (non-Javadoc) * @see org.jibx.runtime.IUnmarshaller#unmarshal(java.lang.Object, * org.jibx.runtime.IUnmarshallingContext) */ public Object unmarshal(Object obj, IUnmarshallingContext ictx) throws JiBXException { // make sure we're at the appropriate start tag UnmarshallingContext ctx = (UnmarshallingContext)ictx; if (!ctx.isAt(m_uri, m_name)) { ctx.throwStartTagNameError(m_uri, m_name); } // create new hashmap if needed int size = ctx.attributeInt(m_uri, SIZE_ATTRIBUTE_NAME, DEFAULT_SIZE); HashMap map = (HashMap)obj; if (map == null) { map = new HashMap(size); } // process all entries present in document ctx.parsePastStartTag(m_uri, m_name); while (ctx.isAt(m_uri, ENTRY_ELEMENT_NAME)) { Object key = ctx.attributeText(m_uri, KEY_ATTRIBUTE_NAME, null); ctx.parsePastStartTag(m_uri, ENTRY_ELEMENT_NAME); Object value = ctx.unmarshalElement(); map.put(key, value); ctx.parsePastEndTag(m_uri, ENTRY_ELEMENT_NAME); } ctx.parsePastEndTag(m_uri, m_name); return map; } public boolean isExtension(String arg0) { return false; } }
Copy after login


e) 然后运行Compile命令

E:/Study/WebHttpUtils>java -cp bin;lib/jibx-bind.jar org.jibx.binding.Compile -v bind.xml

f) 结果如下

         
          
           
            
             tom
            
            
             tom@125.com
            
            
china
2010-11-22
jack email
北京
2010-11-22
{No2=2#tom#tom@125.com#china#2010-11-22, No1=1#jack#email#北京#2010-11-22} 1#jack#email#北京#2010-11-22 2#tom#tom@125.com#china#2010-11-22 顶
Copy after login

以上就是Jibx 处理XML的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!












Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!