如何用java实现基于xml的购物车
Ⅰ 如何用java实现xml文件转excel
java解析excel生成的xml文件的方法是使用dom4j实现的。
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。
1、excel生成的xml样例文件:
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="">
2006-09-16T00:00:00Z
2016-07-25T03:26:50Z
14.00
7956
14808
240
168
2
False
False
<Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="3" x:FullColumns="1"
x:FullRows="1" ss:DefaultRowHeight="14.4">
工号
姓名
工号
姓名
111
张三
111
<Data
ss:Type="String">张三
112
李四
112
<Data
ss:Type="String">李四
3
7
5
False
False
2、java解析代码:
import java.io.File;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo {
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("person.xml"));
Element root = document.getRootElement();
Iterator it = root.elementIterator();
while (it.hasNext()) {
Element element = (Element) it.next();
//未知属性名称情况下
/*Iterator attrIt = element.attributeIterator();
while (attrIt.hasNext()) {
Attribute a = (Attribute) attrIt.next();
System.out.println(a.getValue());
}*/
//已知属性名称情况下
System.out.println("id: " + element.attributeValue("id"));
//未知元素名情况下
/*Iterator eleIt = element.elementIterator();
while (eleIt.hasNext()) {
Element e = (Element) eleIt.next();
System.out.println(e.getName() + ": " + e.getText());
}
System.out.println();*/
//已知元素名情况下
System.out.println("title: " + element.elementText("title"));
System.out.println("author: " + element.elementText("author"));
System.out.println();
}
}
}
Ⅱ 如何用java代码创建xml文件
用java自带的就可以,有问题可以问我
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//构造
public XMLUtil(String name) throws ParserConfigurationException {
filename = name;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
document = builder.newDocument();
}
/**
* 保存到文件
*/
public void toSave() {
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (TransformerException mye) {
mye.printStackTrace();
} catch (IOException exp) {
exp.printStackTrace();。
Ⅲ 如何用Java实现对xml文件的读取和写入以及保存
直接附源码import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;import org.dom4j.*;
import org.dom4j.io.XMLWriter;
public class Dom4jSample { public static void main(String[] args) {
Dom4jSample dom4jSample = new Dom4jSample();
Document document = dom4jSample.createDocument();
try{
dom4jSample.FileWrite(document);
Document documentStr = dom4jSample.StringToXML("<China>I Love!</China>");
dom4jSample.XMLWrite(documentStr);
Element legend = dom4jSample.FindElement(document);
System.out.println(legend.getText());
}
catch(Exception e)
{
}
}
/*
* Create a XML Document
*/
public Document createDocument()
{
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
Element author1 = root.addElement("Lynch");
author1.addAttribute("Age","25");
author1.addAttribute("Country","China");
author1.addText("I am great!");
Element author2 = root.addElement("Legend");
author2.addAttribute("Age","25");
author2.addAttribute("Country","China");
author2.addText("I am great!too!");
return document;
}
/*
* Create a XML document through String
*/
public Document StringToXML(String str) throws DocumentException
{
Document document = DocumentHelper.parseText(str);
return document;
}
public Element FindElement(Document document)
{
Element root = document.getRootElement();
Element legend = null;
for(Iterator i=root.elementIterator("legend");i.hasNext();)
{
legend = (Element)i.next();
}
return legend;
}
/*
* Write a XML file
*/
public void FileWrite(Document document) throws IOException
{
FileWriter out = new FileWriter("C:/Dom2jSample.xml");
document.write(out);
out.close();
}
/*
* Write a XML format file
*/
public void XMLWrite(Document document) throws IOException
{
XMLWriter writer = new XMLWriter(new FileWriter("C:/Dom2jSampleStr.xml"));
writer.write(document);
writer.close();
}
}
Ⅳ 如何用java和xml做留言版
嗯知道怎么用数据库吗??如果知道的话那就好办啊..
想想.留言板.需要什么.留言内容还有留专言时间还有留言人属.差不多吧.那么你可以设计一个xml每一个留言元素中包含3个子元素.然后写一个操作xml的类.用于读取和存储xml.表面把这些方法抽象出来.就算以后换了数据库表面样式都是不变的啊..页面的设计就和使用数据库的一样了..
这是你会用数据库写留言板的前提..要是不知道怎么写留言板.那么就看看网站上的留言板都是如何实现的吧..
Ⅳ 如何根据xml和schema文件生成java类(用程序实现)!
JAXB提供了可以从schema生成java类,下面简要介绍一下生成的步骤:
1:下载jaxb包 jaxb 2_1_9.zip ,在本博客中可版以下载得到。解压后权得到四个目录,包含bin、lib 、docs、example
2:在"cmd"里进入到bin目录,如C:/>cd C:/jaxb2.1.9/bin 回车
3:输入xjc c:/students.xsd -d c:/src -p com.entity 回车
注:-d 说明要生成的java类存放目录
-p 为生成java类指定的包名
students.xsd 为自己定义的Schema
Ⅵ 用java实现 xml文件转实体类
使用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();
}
}
Ⅶ 如何用java实现xml文件转excel
实现思路:
直接从Excel文件装换成XML文件是可以实现的,这里我采用一个中间装内换,也就是先实现excel文件容内容放入实现设计好的access数据库文件中,然后再从access中读取记录写道xml文件中,因为我这里的实际问题是把多个excel表,每个表中又有多个sheet工作薄,这样我先导入数据库中,也方便修改和处理.
这样,需要写两个类:
XlsToAccess类,用来实现从excel文件根据事先约定的格式,按照数据库设计字段存放进去
AccessToXml类,用来实现从access文件数据库中的记录按约定格式写到xml文件中去
然后还需要一个主运行窗口类XlsToXml,这个类我们使用eclipse插件SWT Designer来完成
最后把工程打成JAR包,再用NativeJ将Jar包生成为可执行的exe文件
Ⅷ 谁来帮我解析一个简单的xml啊,xml如下,我想把里面的东西取出来,在JAVA里实现
先从连接里读取出字符串,然后按后边方法解析。
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);
Ⅸ 做一个发短信的功能 需要解析如下的xml 用java实现 谢谢!
="<?xmlversion="1.0"encoding="UTF-8"?> <result> <resultcode>0</resultcode> <taskcode>20130213231023</taskcode> <errordescription>发送成功</errordescription> </result>";
longstart=System.currentTimeMillis();
try{
SAXBuilderbuilder=newSAXBuilder();
org.jdom.Documentdoc=builder.build(newByteArrayInputStream(xml
.getBytes("UTF-8")));
Elementelement=doc.getRootElement();
ListallChildren=element.getChildren();
for(inti=0;i<allChildren.size();i++){
System.out.print(((Element)allChildren.get(i)).getName());
System.out.print(":");
System.out.println(((Element)allChildren.get(i)).getText());
}
}catch(JDOMExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
longend=System.currentTimeMillis();
System.out.println("耗时:"+(end-start)+"ms");
Ⅹ Java实现一个HTTP基于xml的post请求 如何在struts2 action获取
//用户名校验方法
//这个方法是用XMLHTTPRequest对象进行异步数据交互
var xmlhttp;
function verify(){
//alert(xmlhttp.readyState);
//×××××××××readyState变更0.1.2.3.4
//1.使用dom的方式获取文本框中的值
//是dom中获取元素节点的一种方法一个元素节点对应hrml中的一个标签,如果<input>.value可以获得一个元素节点的value属性值
//注意取值.value;否则前台取不到本想取到的值
var userName = document.getElementById("userName").value;
//2.创建xmlhttpRequest对象
//需要针对不同浏览器建立不同的代码
//Window.XMLHttpRequest尽量放置在window.ActiveXObject之前
if(window.XMLHttpRequest){
//针对firefox,mozillar,opera,safari,ie7,ie8
xmlhttp = new XMLHttpRequest();
//修正mozillar浏览器的bug语句
if (xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
//针对的是ie6,ie5.5,ie5
//两个可以用于创建XMLHTTPRequset对象的控件名称,保存在一个js的数组中
//排在前面的版本较新
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0;i<activexName.length;i++){
try{
//取出一个控件的名进行创建,如果创建成功就停止循环
//如果创建失败,会抛出异常,然后可以继续循环,继续尝试创建
xmlhttp = new ActiveXObject(activexName[i]);
break;
}catch(e){
}
}
//确认XMLHTTPRequest对象创建成功
}
if (!xmlhttp){
alert("XMLHttpRequest对象创建失败!!");
return;
}else{
alert("xmlhttp");
}
//2.注册回调函数
//注册回调函数时候,只需要函数名,不要加括号
xmlhttp.onreadystatechange = callback;
////3.设置链接信息
////第一个参数表示http的请求方式,支持所有的http请求方式,主要使用个体和post方法
////第二个参数表示请求的url地址,get方式请求的参数也在url中
////第三个参数表示采用异步还是同步交互方式,true表示异步
//xmlhttp.open("GET","AJAXXMLServer?name=" + userName,true);
//post请求方式的代码
xmlhttp.open("POST","AJAXXMLServer",true);
//post方式需要自己设置http请求头
xmlhttp.setRequestHeader("Content-Tpye","application/x-www-form-urlencoded");
//post方式发送数据
xmlhttp.send("name= " + userName);
////4.发送数据,开始和服务器端进行交互
////同步方式下,send这句话在服务器端数据回来后才执行
////异步方式下,send这句话会立即完成执行
////get方式下的要发送数据都已经在url中了。因此不需要在词单独send内容了
//xmlhttp.send(null);
}
//回调函数
function callback(){
//5.接收响应数据
//判断对象的状态是交互完成的即为4
if (xmlhttp.readyState == 4){
//判断http的交互是否成功
if (xmlhttp.status == 200){
//使用responseXML的方式来接受xml数据的dom对象
var domObj = xmlhttp.responseXML;
//<message>是文本信息</message>
//dom利用getElementsByTagName可以根据标签来获取元素节点。返回的是一个数组
var messageNodes = domObj.getElementsByTagName("message");
if (messageNodes.length > 0){
//获取message节点中的文本内容
//注:无效取值用法:::var responseMessage = messageNodes[0].innerHTML;
//首先messaNodes[0]获取的的是message标签所获取的文本信息,即元素节点。
//message标签中的文本在dom中是message标签所对应的元素节点的子节点,firstChild可以获取当前节点的第一个子节点
//通过以下方式就可以获取到文本内容多对应的节点
var textNode = messageNodes[0].firstChild;
//对于文本节点来说,可以通过nodeValue的方式返回文本节点的文本内容
var responseMessage = textNode.nodeValue;
alert("-----------------");
//将数据显示在页面上
//通过dom的方式找到div标签所对应的元素节点
var divNode = document.getElementById("result");
//alert(divNode);
//设置元素节点中的html内容
divNode.innerHTML = responseMessage;
}else{
alert("XML数据格式错误,原始文本内容为"+ xmlhttp.responseText);
}
}else{
alert("出错了!");
}
}
}
这样返回的是一个数据,你看看对你修改成返回文件有没有用
