需要jdomjar和dom4jjar这两个包
/
将crash信息打包成xml格式
@param hashMap 原始crash信息的hashmap形式
@throws IOException
@throws JDOMException
/
public void BuildXMLDoc(HashMap<String, String> hashMap) throws IOException, JDOMException {
int size = hashMapsize();
Iterator iter = hashMapentrySet()iterator();
MapEntry entry;
String key;
String val;
int id = 1;
// 创建根节点 list;
Element root = new Element("phoneInfo");
// 根节点添加到文档中;
Document Doc = new Document(root);
// 此处 迭代器的遍历 可替换成循环遍历 数据库表的结果集 *** 作;
while (iterhasNext()) {
entry = (MapEntry)iternext();
key = (String)entrygetKey();
val = hashMapget(key);
if (val == null || vallength() == 0)
{
val = "null";
}
// 创建节点 user;
Element elements = new Element("category");
// 给 user 节点添加属性 id;
elementssetAttribute("id", "" + id);
id ++;
// 给 user 节点添加子节点并赋值;
// new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui
// 替换成表中记录值;
elementsaddContent(new Element(key)setText(val));
// 给父节点list添加user子节点;
rootaddContent(elements);
}
//带有缩进格式的xml 更美观
Format format = FormatgetPrettyFormat();
XMLOutputter XMLOut = new XMLOutputter(format);
XMLOutoutput(Doc, new FileOutputStream(FileUtilCRASHPATH));
Systemoutprintln("完成了文件写入");
}
上面虽然是对hashmap的遍历,但是对于其他容器的遍历形式不变,只是换成你需要的信息即可
下面是其他文章找到的
生成XML的时候,处理特殊字符
elementaddContent(new CDATA("<xml> content"));
生成XML的时候,设置编码
XMLOutputter XMLOut = new XMLOutputter();
XMLOutsetEncoding("gb2312");
XMLOutoutput(Doc, new FileOutputStream("test1xml"));
import javaioFile;import javaioFileNotFoundException;import javaioFileOutputStream;import javaioIOException;import orgw3cdom;import orgxmlsaxSAXException;import javaxxmlparsers;import javaxxmltransform;import javaxxmltransformdomDOMSource;import javaxxmltransformstream;import javaxxmlxpath;public class Test { public static void main(String[] args) { DocumentBuilderFactory factory=DocumentBuilderFactorynewInstance(); Element theBook=null, theElem=null, root=null; try { factorysetIgnoringElementContentWhitespace(true); DocumentBuilder db=factorynewDocumentBuilder(); Document xmldoc=dbparse(new File("Test1xml")); root=xmldocgetDocumentElement(); theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root); Systemoutprintln("--- 查询找《哈里波特》 ----"); Element nameNode=(Element)theBookgetElementsByTagName("price")item(0); String name=nameNodegetFirstChild()getNodeValue(); Systemoutprintln(name); output(theBook); Systemoutprintln("=============selectSingleNode(books/book[name='哈里波特'], root)=================="); //--- 新建一本书开始 ---- theBook=xmldoccreateElement("book"); theElem=xmldoccreateElement("name"); theElemsetTextContent("新书"); theBookappendChild(theElem); theElem=xmldoccreateElement("price"); theElemsetTextContent("20"); theBookappendChild(theElem); theElem=xmldoccreateElement("memo"); theElemsetTextContent("新书的更好看。"); theBookappendChild(theElem); rootappendChild(theBook); Systemoutprintln("--- 新建一本书开始 ----"); output(xmldoc); Systemoutprintln("=============================="); //--- 新建一本书完成 ---- //--- 下面对《哈里波特》做一些修改。 ---- //--- 查询找《哈里波特》---- //--- 此时修改这本书的价格 ----- theBookgetElementsByTagName("price")item(0)setTextContent("15");//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相当于xpath的"//price"。 Systemoutprintln("--- 此时修改这本书的价格 ----"); output(theBook); //--- 另外还想加一个属性id,值为B01 ---- theBooksetAttribute("id", "B01"); Systemoutprintln("--- 另外还想加一个属性id,值为B01 ----"); output(theBook); //--- 对《哈里波特》修改完成。 ---- //--- 要用id属性删除《三国演义》这本书 ---- theBook=(Element) selectSingleNode("/books/book[@id='B02']", root); Systemoutprintln("--- 要用id属性删除《三国演义》这本书 ----"); output(theBook); theBookgetParentNode()removeChild(theBook); Systemoutprintln("--- 删除后的XML ----"); output(xmldoc); //--- 再将所有价格低于10的书删除 ---- NodeList someBooks=selectNodes("/books/book[price<10]", root); Systemoutprintln("--- 再将所有价格低于10的书删除 ---"); Systemoutprintln("--- 符合条件的书有 "+someBooksgetLength()+"本。 ---"); for(int i=0;i<someBooksgetLength();i++) { someBooksitem(i)getParentNode()removeChild(someBooksitem(i)); } output(xmldoc); saveXml("Test1_Editedxml", xmldoc); } catch (ParserConfigurationException e) { eprintStackTrace(); } catch (SAXException e) { eprintStackTrace(); } catch (IOException e) { eprintStackTrace(); } } public static void output(Node node) {//将node的XML字符串输出到控制台 TransformerFactory transFactory=TransformerFactorynewInstance(); try { Transformer transformer = transFactorynewTransformer(); transformersetOutputProperty("encoding", "gb2312"); transformersetOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); sourcesetNode(node); StreamResult result=new StreamResult(); resultsetOutputStream(Systemout); transformertransform(source, result); } catch (TransformerConfigurationException e) { eprintStackTrace(); } catch (TransformerException e) { eprintStackTrace(); } } public static Node selectSingleNode(String express, Object source) {//查找节点,并返回第一个符合条件节点 Node result=null; XPathFactory xpathFactory=XPathFactorynewInstance(); XPath xpath=xpathFactorynewXPath(); try { result=(Node) xpathevaluate(express, source, XPathConstantsNODE); } catch (XPathExpressionException e) { eprintStackTrace(); } return result; } public static NodeList selectNodes(String express, Object source) {//查找节点,返回符合条件的节点集。 NodeList result=null; XPathFactory xpathFactory=XPathFactorynewInstance(); XPath xpath=xpathFactorynewXPath(); try { result=(NodeList) xpathevaluate(express, source, XPathConstantsNODESET); } catch (XPathExpressionException e) { eprintStackTrace(); } return result; } public static void saveXml(String fileName, Document doc) {//将Document输出到文件 TransformerFactory transFactory=TransformerFactorynewInstance(); try { Transformer transformer = transFactorynewTransformer(); transformersetOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); sourcesetNode(doc); StreamResult result=new StreamResult(); resultsetOutputStream(new FileOutputStream(fileName)); transformertransform(source, result); } catch (TransformerConfigurationException e) { eprintStackTrace(); } catch (TransformerException e) { eprintStackTrace(); } catch (FileNotFoundException e) { eprintStackTrace(); } }} XML:<xml version="10" 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>
以上就是关于java 生成xml文件怎么有格式全部的内容,包括:java 生成xml文件怎么有格式、JAVA 生成xml格式,具体格式如下,请问JAVA方法怎么写、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)