JAVA 生成xml格式,具体格式如下,请问JAVA方法怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 生成xml格式,具体格式如下,请问JAVA方法怎么写相关的知识,希望对你有一定的参考价值。

<?xml version="1.0" encoding="UTF-8"?>
<chart>
<series>
<value xid="0">1949</value>
<value xid="1">1950</value>
<value xid="2">1951</value>
<value xid="3">1952</value>
<value xid="4">1953</value>
<value xid="5">1954</value>
</series>
<graphs>
<graph gid="1">
<value xid="0">2.54</value>
<value xid="1">2.51</value>
<value xid="2">2.53</value>
<value xid="3">2.53</value>
<value xid="4">2.68</value>
<value xid="5">2.78</value>
</graph>
<graph gid="2">
<value xid="0">20.21</value>
<value xid="1">19.73</value>
<value xid="2">18.43</value>
<value xid="3">18.08</value>
<value xid="4">19.01</value>
<value xid="5">19.57</value>
</graph>
</graphs>
<guides>
<guide>

</guide>
</guides>
</chart>
数据源:
series=“1949 ,1950 ,1951 ,1952 ,1953 ,1954 ”
graph_gid_2=" 2.54 ,2.51, 2.53, 2.53 ,2.68 , 2.78"
graph_gid_2=“ 20.21, 19.73 ,18.43 ,18.08, 19.01, 19.57”

import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.w3c.dom.*;import org.xml.sax.SAXException;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.*;import javax.xml.xpath.*;public class Test public static void main(String[] args) DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); Element theBook=null, theElem=null, root=null; try factory.setIgnoringElementContentWhitespace(true); DocumentBuilder db=factory.newDocumentBuilder(); Document xmldoc=db.parse(new File("Test1.xml")); root=xmldoc.getDocumentElement(); theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root); System.out.println("--- 查询找《哈里波特》 ----"); Element nameNode=(Element)theBook.getElementsByTagName("price").item(0); String name=nameNode.getFirstChild().getNodeValue(); System.out.println(name); output(theBook); System.out.println("=============selectSingleNode(books/book[name='哈里波特'], root)=================="); //--- 新建一本书开始 ---- theBook=xmldoc.createElement("book"); theElem=xmldoc.createElement("name"); theElem.setTextContent("新书"); theBook.appendChild(theElem); theElem=xmldoc.createElement("price"); theElem.setTextContent("20"); theBook.appendChild(theElem); theElem=xmldoc.createElement("memo"); theElem.setTextContent("新书的更好看。"); theBook.appendChild(theElem); root.appendChild(theBook); System.out.println("--- 新建一本书开始 ----"); output(xmldoc); System.out.println("=============================="); //--- 新建一本书完成 ---- //--- 下面对《哈里波特》做一些修改。 ---- //--- 查询找《哈里波特》---- //--- 此时修改这本书的价格 ----- theBook.getElementsByTagName("price").item(0).setTextContent("15");//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相当于xpath的".//price"。 System.out.println("--- 此时修改这本书的价格 ----"); output(theBook); //--- 另外还想加一个属性id,值为B01 ---- theBook.setAttribute("id", "B01"); System.out.println("--- 另外还想加一个属性id,值为B01 ----"); output(theBook); //--- 对《哈里波特》修改完成。 ---- //--- 要用id属性删除《三国演义》这本书 ---- theBook=(Element) selectSingleNode("/books/book[@id='B02']", root); System.out.println("--- 要用id属性删除《三国演义》这本书 ----"); output(theBook); theBook.getParentNode().removeChild(theBook); System.out.println("--- 删除后的XML ----"); output(xmldoc); //--- 再将所有价格低于10的书删除 ---- NodeList someBooks=selectNodes("/books/book[price<10]", root); System.out.println("--- 再将所有价格低于10的书删除 ---"); System.out.println("--- 符合条件的书有 "+someBooks.getLength()+"本。 ---"); for(int i=0;i<someBooks.getLength();i++) someBooks.item(i).getParentNode().removeChild(someBooks.item(i)); output(xmldoc); saveXml("Test1_Edited.xml", xmldoc); catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); public static void output(Node node) //将node的XML字符串输出到控制台 TransformerFactory transFactory=TransformerFactory.newInstance(); try Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty("encoding", "gb2312"); transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); source.setNode(node); StreamResult result=new StreamResult(); result.setOutputStream(System.out); transformer.transform(source, result); catch (TransformerConfigurationException e) e.printStackTrace(); catch (TransformerException e) e.printStackTrace(); public static Node selectSingleNode(String express, Object source) //查找节点,并返回第一个符合条件节点 Node result=null; XPathFactory xpathFactory=XPathFactory.newInstance(); XPath xpath=xpathFactory.newXPath(); try result=(Node) xpath.evaluate(express, source, XPathConstants.NODE); catch (XPathExpressionException e) e.printStackTrace(); return result; public static NodeList selectNodes(String express, Object source) //查找节点,返回符合条件的节点集。 NodeList result=null; XPathFactory xpathFactory=XPathFactory.newInstance(); XPath xpath=xpathFactory.newXPath(); try result=(NodeList) xpath.evaluate(express, source, XPathConstants.NODESET); catch (XPathExpressionException e) e.printStackTrace(); return result; public static void saveXml(String fileName, Document doc) //将Document输出到文件 TransformerFactory transFactory=TransformerFactory.newInstance(); try Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); source.setNode(doc); StreamResult result=new StreamResult(); result.setOutputStream(new FileOutputStream(fileName)); transformer.transform(source, result); catch (TransformerConfigurationException e) e.printStackTrace(); catch (TransformerException e) e.printStackTrace(); catch (FileNotFoundException e) e.printStackTrace(); XML:<?xml version="1.0" encoding="GBK"?><books><book><name>哈里波特</name><price>10</price><memo>这是一本很好看的书。</memo></book><book id="B02"><name>三国演义</name><price>10</price><memo>四大名著之一。</memo></book><book id="B03"><name>水浒</name><price>6</price><memo>四大名著之一。</memo></book><book id="B04"><name>红楼</name><price>5</price><memo>四大名著之一。</memo></book></books> 参考技术A 给你个示例你看一下,我不知道你的数据是怎么来的,应该是实体吧

package com.xh.xml;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.output.XMLOutputter;
public class Java2XML
public void BuildXMLDoc() throws IOException, JDOMException
// 创建根节点 list;
Element root = new Element("list");
// 根节点添加到文档中;
Document Doc = new Document(root);
// 此处 for 循环可替换成 遍历 数据库表的结果集操作;
for (int i = 0; i < 2; i++)
// 创建节点 user;
Element elements = new Element("user");
// 给 user 节点添加属性 id;
elements.setAttribute("id", "" + i);
// 给 user 节点添加子节点并赋值;
// new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui 替换成表中记录值;
elements.addContent(new Element("name").setText("xuehui"));
elements.addContent(new Element("age").setText("28"));
elements.addContent(new Element("sex").setText("Male"));
// 给父节点list添加user子节点;
root.addContent(elements);

XMLOutputter XMLOut = new XMLOutputter();
// 输出 user.xml 文件;
XMLOut.output(Doc, new FileOutputStream("user.xml"));

public static void main(String[] args)
try
Java2XML j2x = new Java2XML();
System.out.println("生成 mxl 文件...");
j2x.BuildXMLDoc();
catch (Exception e)
e.printStackTrace();



生成的 user.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<list>
<user id="0">
<name>xuehui</name>
<age>28</age>
<sex>Male</sex>
</user>
<user id="1">
<name>xuehui</name>
<age>28</age>
<sex>Male</sex>
</user>
</list>
生成XML时候处理缩进,对输出格式进行美化
只需要将上面生成XML时候的带吗修改成如下代码:
Format format = Format.getPrettyFormat();
XMLOutputter XMLOut = new XMLOutputter(format);
XMLOut.output(Doc, new FileOutputStream("user.xml"));
生成XML的时候,处理特殊字符
element.addContent(new CDATA("<xml> content"));
生成XML的时候,设置编码
XMLOutputter XMLOut = new XMLOutputter();
XMLOut.setEncoding("gb2312");
XMLOut.output(Doc, new FileOutputStream("test1.xml"));本回答被提问者采纳

CXF解析svc?wsdl文件成java格式

今天用CXF在解析http方式的svc?wsdl文件成java格式时,提示Service 某个Service does not contain any usable ports,请问这个是怎么回事啊,详细一点,就算几句话也说明一下原因,谢谢。

参考技术A 1. 安装JDK1.5, 配置系统环境变量:
   下载安装JDK后, 设置环境变量:
   JAVA_HOME=C:/Program Files/Java/jdk1.5.0_02
   Path=%Path%;%JAVA_HOME%/bin(这里的%Path%指你系统已经有的一系列配置)
   CLASSPATH=%JAVA_HOME%/lib
2. 下载CXF, 配置系统环境变量: 
    CXF下载地址http://cxf.apache.org/download.html
    配置环境变量:
    CXF_HOME=E:\\WebService\\CXF\\apache-cxf-2.1.1\\apache-cxf-2.1.1(以我的目录为例)
    PATH后追加上“ ;%CXF_HOME%\\bin”
    在cmd命令行中输入wsdl2java如果显示其用法表示配置好了。
3.运行命令是 : wsdl2java  d:\\document\\webservice\\hello.wsdl  (wsdl 的路径)
   
4.如果没有报错就表示执行成功了,但是执行成功后的java文件生成到什么地方了? 系统没有提示,当时我就用了一种最笨的方法来找,在整个电脑里面搜索才找到的,后来我才发现了规律,就是你敲入命令的时候,所处的路径,肯定就是你文件生成的地方,我当时是cmd直接进入的,
路径是C:\\Documents and Settings\\Administrator,所以生成的文件也在这个目录下。
5.新建工程,将生成的java文件和所需要的 jar 包导入即可。

参考地址:

http://radio123.iteye.com/blog/1134267

追问

这些前面的工作我都做完了,就是解析的时候提示

以上是关于JAVA 生成xml格式,具体格式如下,请问JAVA方法怎么写的主要内容,如果未能解决你的问题,请参考以下文章

基于soot的java方法名生成报告

请问用啥软件生成.xml文件,用啥软件生成html文件?

CXF解析svc?wsdl文件成java格式

请问Eclipse怎么识别xml文件

如何用java生成一个XML文件,并且将该文件压缩成ZIP格式后再写到硬盘上?

在java中如何实现http/post/xml发送数据报文?麻烦高手赐教!