java 是怎么解析xml文件的啊 1 请问 java 是怎么解析xml文件的啊2 如果一个布局管理xml 被一个 java读 这个xml是怎么转化的啊 →_→ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以看下 dom4j 。现在一般都用这个解析xml的。 具体的代码我也有点忘了。 不过网上好多。 你可以搜搜好多资料。希望可以帮到你。 1.java解析xml常见的技术有 dom、sax、jdom、dom4j,各有特点。dom4j较常用 具体代码可以百度,很简单。2.不懂 个人觉得。。dom4j解析xml比较好用 1.dom4j2.建议参考android 中布局XML文件的原理,我也不太懂 有很多方法,常用的有Jdom,dom4j,google下一大把实例,自己看看就知道了 最好是dom4j吧!~我学的就是用的这种解析的!~具体代码还真是网上搜吧!~我备份的丢了 楼主头像是本人么,求交往我是来泡妞的,哈哈也可以将该xml先转换成json,然后解析 楼主头像是本人么,求交往我是来打酱油和泡妞的,哈哈dom4j 我说楼上你有病吧,你怎么不在大马路上啦个女生说你愿意和我行交吗 再说楼主连个XML都不能解析还能要你干什么 ls有很多解决方案了 建议使用dom4j 好用 以前项目中的代码public static void templateConfigInit() { Document document = getDocument("/templateConfig.xml");// 文档对象 Element root = document.getRootElement();// 根节点 Element config = root.element("config");// config节点 for (Iterator<Element> it = config.elementIterator(); it.hasNext();) { Element el = it.next(); if (COMPANY_LEVEL_TEMPLATE.equals(el.getName())) { for (Iterator<Element> itc = el.elementIterator(); itc.hasNext();) { Element elc = itc.next(); setTemplate(elc, COMPANY_LEVEL_TEMPLATE); } } else if (DIVISION_LEVEL_TEMPLATE.equals(el.getName())) { for (Iterator<Element> itc = el.elementIterator(); itc.hasNext();) { Element elc = itc.next(); setTemplate(elc, DIVISION_LEVEL_TEMPLATE); } } } log.info("load [templateConfig.xml] completed"); } dom4j比较好用使用dom4j创建catalog.xmlimport org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter;import java.io.*;public class XmlDom4J{public void generateDocument(){Document document = DocumentHelper.createDocument(); Element catalogElement = document.addElement("catalog"); catalogElement.addComment("An XML Catalog"); catalogElement.addProcessingInstruction("target","text"); Element journalElement = catalogElement.addElement("journal"); journalElement.addAttribute("title", "XML Zone"); journalElement.addAttribute("publisher", "IBM developerWorks"); Element articleElement=journalElement.addElement("article"); articleElement.addAttribute("level", "Intermediate"); articleElement.addAttribute("date", "December-2001"); Element titleElement=articleElement.addElement("title"); titleElement.setText("Java configuration with XML Schema"); Element authorElement=articleElement.addElement("author"); Element firstNameElement=authorElement.addElement("firstname"); firstNameElement.setText("Marcello"); Element lastNameElement=authorElement.addElement("lastname"); lastNameElement.setText("Vitaletti"); document.addDocType("catalog", null,"file://c:/Dtds/catalog.dtd"); try{ XMLWriter output = new XMLWriter( new FileWriter( new File("c:/catalog/catalog.xml") )); output.write( document ); output.close(); } catch(IOException e){System.out.println(e.getMessage());}}public static void main(String[] argv){XmlDom4J dom4j=new XmlDom4J();dom4j.generateDocument();}} 我是挂项目的 那些东西 我都没接触啊 我贴代码给你看看哦<col num="0" type="composite" offsetw="0" offseth="0" defaultWidth="700" defaultHeight="25" defaultStyle="border" invisibleBinding="" rowWidthEqual="true" style="none"> <row num="1" type="composite" style="none"> <col num="13" type="label" info="生产厂家" width="80"></col> <col num="14" type="text" binding="s.factory" width="140"></col> <col num="13" type="label" info="品种规格" width="120"></col> <col num="14" type="text" binding="s.guige" width="140"></col> <col num="11" type="label" info="生产日期" width="100"></col> <col num="12" type="date" binding="s.fac_date" width="120"></col> </row></col> public class UIComponentParser { private static Log log = LogFactory.getLog(UIComponentParser.class); public UIComponent parse(InputStream xmlis) throws Exception { ColModel colModel = new ColModel(null); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder dbd = dbf.newDocumentBuilder(); Document doc = dbd.parse(xmlis); Element element = doc.getDocumentElement(); if (element.getNodeName().equals("col")) { checkAttributeExist(element, "num"); checkAttributeExist(element, "type"); String type = element.getAttribute("type"); if (!(type.equals("composite") || type.equals("group"))) { log.error("模型文件的根元素的属性type的值必须为composite或group"); throw new Exception("模型文件的根元素的属性type的值必须为composite或group"); } copyAttributes(element, colModel); colModel.setColOffseth(0); colModel.setColOffsetw(0); // 以下属性的值将可能被重新覆盖为整型对象,方便后期读取和处理 if (element.getAttribute("offsetw").length() > 0) { colModel.setOffsetw((this.toPositiveInteger(element, "offsetw"))); } else { colModel.setOffsetw(0); } if (element.getAttribute("offseth").length() > 0) { colModel.setOffseth((this.toPositiveInteger(element, "offseth"))); } else { colModel.setOffseth(0); } if (element.getAttribute("defaultHeight").length() > 0) { colModel.setDefaultHeight((this.toPositiveInteger(element, "defaultHeight"))); } else { colModel.setDefaultHeight(30); } if (element.getAttribute("defaultWidth").length() > 0) { colModel.setDefaultWidth((this.toPositiveInteger(element, "defaultWidth"))); } else { colModel.setDefaultWidth(700); } if (element.getAttribute("defaultStyle").length() > 0) { colModel.setDefaultStyle(element.getAttribute("defaultStyle")); } else { colModel.setDefaultStyle(""); } colModel.setStyle(""); if (element.getAttribute("invisibleBinding").length() > 0) { colModel.setInvisibleBinding(element .getAttribute("invisibleBinding")); } if (element.getAttribute("rowWidthEqual").length() > 0) { colModel.setRowWidthEqual(element.getAttribute("rowWidthEqual")); } else { colModel.setRowWidthEqual("true"); } NodeList nodes = element.getChildNodes(); if (nodes != null) { for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeName().equals("row")) { parseRow(colModel, (Element) node); } else { log.error("元素名称" + node + "非法"); throw new Exception("元素名称" + node + "非法"); } } } } } else { log.error("模型文件的根元素名必须为col"); throw new Exception("模型文件的根元素名必须为col"); } return new UIComponent(colModel); } private void parseRow(ColModel colModel, Element element) throws Exception { RowModel rowModel = new RowModel(colModel); checkAttributeExist(element, "num"); checkAttributeExist(element, "type"); String type = element.getAttribute("type"); validateType(element, type); copyAttributes(element, rowModel); if (element.getAttribute("defaultHeight").length() > 0) { rowModel.setDefaultHeight((this.toPositiveInteger(element, "defaultHeight"))); } else { rowModel.setDefaultHeight(colModel.getDefaultHeight()); } if (element.getAttribute("defaultWidth").length() > 0) { rowModel.setDefaultWidth((this.toPositiveInteger(element, "defaultWidth"))); } else { rowModel.setDefaultWidth(colModel.getDefaultWidth()); } rowModel.setDefaultStyle(colModel.getDefaultStyle()); rowModel.setNum(element.getAttribute("num")); rowModel.setType(element.getAttribute("type")); if (element.getAttribute("style").length() > 0) { rowModel.setStyle(element.getAttribute("style")); } else { rowModel.setStyle(rowModel.getDefaultStyle()); } // 处理col子元素 NodeList nodes = element.getChildNodes(); if (nodes != null) { for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeName().equals("col")) { parseCol(rowModel, (Element) node); } else { log.error("元素名称" + node + "非法"); throw new Exception("元素名称" + node + "非法"); } } } } // 计算row(叶子节点)的高度和宽度 List<ColModel> childCols = rowModel.getChildCols(); int width = 0; int height = 0; if (childCols.size() == 0) { if (element.getAttribute("height").length() > 0) { height = this.toPositiveInteger(element, "height"); } else { height = rowModel.getDefaultHeight(); } if (element.getAttribute("width").length() > 0) { width = this.toPositiveInteger(element, "width"); } else { width = rowModel.getDefaultWidth(); } if (element.getAttribute("type").equals("tabFolder")) { // TabFolder的Tab的高度设为25 height += 25; width += 10; } rowModel.setHeight(height); rowModel.setWidth(width); } // 以下属性的值将可能被重新覆盖为整型对象,方便后期读取和处理 // row部件的偏移量 if (element.getAttribute("offsetw").length() > 0) { rowModel.setOffsetw((this.toPositiveInteger(element, "offsetw"))); } else { rowModel.setOffsetw(0); } if (element.getAttribute("offseth").length() > 0) { rowModel.setOffseth((this.toInteger(element, "offseth"))); } else { rowModel.setOffseth(0); } } JDBC插入MySQL报错:Data truncated for column 'period' at row 1 struts 配置文件 struts 中的sql语句 地图上的缩放滚动条是怎么做的? 弹出目录的问题 如何在客户端检查<input type="file" name="file1"/>中的文件路径是否存在? 高人必看的问题 跪求,各位帮忙解决出错问题,100分相送!提出解决大大给分! 文件下载 文件名称问题 请教几个问题。谢谢。jsp+sql server 20000 eclipse中断点的一个问题 java实现下载文件(在网页页面点击及弹出下载提示)
具体代码可以百度,很简单。2.不懂
2.建议参考android 中布局XML文件的原理,我也不太懂
我是来泡妞的,哈哈
也可以将该xml先转换成json,然后解析
我是来打酱油和泡妞的,哈哈
dom4j
Document document = getDocument("/templateConfig.xml");// 文档对象
Element root = document.getRootElement();// 根节点
Element config = root.element("config");// config节点
for (Iterator<Element> it = config.elementIterator(); it.hasNext();) {
Element el = it.next();
if (COMPANY_LEVEL_TEMPLATE.equals(el.getName())) {
for (Iterator<Element> itc = el.elementIterator(); itc.hasNext();) {
Element elc = itc.next();
setTemplate(elc, COMPANY_LEVEL_TEMPLATE);
}
}
else if (DIVISION_LEVEL_TEMPLATE.equals(el.getName())) {
for (Iterator<Element> itc = el.elementIterator(); itc.hasNext();) {
Element elc = itc.next();
setTemplate(elc, DIVISION_LEVEL_TEMPLATE);
}
}
}
log.info("load [templateConfig.xml] completed");
}
使用dom4j创建catalog.xml
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
import java.io.*;
public class XmlDom4J{
public void generateDocument(){
Document document = DocumentHelper.createDocument();
Element catalogElement = document.addElement("catalog");
catalogElement.addComment("An XML Catalog");
catalogElement.addProcessingInstruction("target","text");
Element journalElement = catalogElement.addElement("journal");
journalElement.addAttribute("title", "XML Zone");
journalElement.addAttribute("publisher", "IBM developerWorks");
Element articleElement=journalElement.addElement("article");
articleElement.addAttribute("level", "Intermediate");
articleElement.addAttribute("date", "December-2001");
Element titleElement=articleElement.addElement("title");
titleElement.setText("Java configuration with XML Schema");
Element authorElement=articleElement.addElement("author");
Element firstNameElement=authorElement.addElement("firstname");
firstNameElement.setText("Marcello");
Element lastNameElement=authorElement.addElement("lastname");
lastNameElement.setText("Vitaletti");
document.addDocType("catalog",
null,"file://c:/Dtds/catalog.dtd");
try{
XMLWriter output = new XMLWriter(
new FileWriter( new File("c:/catalog/catalog.xml") ));
output.write( document );
output.close();
}
catch(IOException e){System.out.println(e.getMessage());}
}
public static void main(String[] argv){
XmlDom4J dom4j=new XmlDom4J();
dom4j.generateDocument();
}}
defaultHeight="25" defaultStyle="border" invisibleBinding=""
rowWidthEqual="true" style="none">
<row num="1" type="composite" style="none">
<col num="13" type="label" info="生产厂家" width="80"></col>
<col num="14" type="text" binding="s.factory" width="140"></col>
<col num="13" type="label" info="品种规格" width="120"></col>
<col num="14" type="text" binding="s.guige" width="140"></col>
<col num="11" type="label" info="生产日期" width="100"></col>
<col num="12" type="date" binding="s.fac_date" width="120"></col>
</row>
</col>
private static Log log = LogFactory.getLog(UIComponentParser.class); public UIComponent parse(InputStream xmlis) throws Exception {
ColModel colModel = new ColModel(null);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder dbd = dbf.newDocumentBuilder();
Document doc = dbd.parse(xmlis);
Element element = doc.getDocumentElement();
if (element.getNodeName().equals("col")) {
checkAttributeExist(element, "num");
checkAttributeExist(element, "type"); String type = element.getAttribute("type");
if (!(type.equals("composite") || type.equals("group"))) {
log.error("模型文件的根元素的属性type的值必须为composite或group");
throw new Exception("模型文件的根元素的属性type的值必须为composite或group");
} copyAttributes(element, colModel); colModel.setColOffseth(0);
colModel.setColOffsetw(0); // 以下属性的值将可能被重新覆盖为整型对象,方便后期读取和处理
if (element.getAttribute("offsetw").length() > 0) {
colModel.setOffsetw((this.toPositiveInteger(element, "offsetw")));
} else {
colModel.setOffsetw(0);
} if (element.getAttribute("offseth").length() > 0) {
colModel.setOffseth((this.toPositiveInteger(element, "offseth")));
} else {
colModel.setOffseth(0);
} if (element.getAttribute("defaultHeight").length() > 0) {
colModel.setDefaultHeight((this.toPositiveInteger(element,
"defaultHeight")));
} else {
colModel.setDefaultHeight(30);
} if (element.getAttribute("defaultWidth").length() > 0) {
colModel.setDefaultWidth((this.toPositiveInteger(element,
"defaultWidth")));
} else {
colModel.setDefaultWidth(700);
} if (element.getAttribute("defaultStyle").length() > 0) {
colModel.setDefaultStyle(element.getAttribute("defaultStyle"));
} else {
colModel.setDefaultStyle("");
} colModel.setStyle("");
if (element.getAttribute("invisibleBinding").length() > 0) {
colModel.setInvisibleBinding(element
.getAttribute("invisibleBinding"));
} if (element.getAttribute("rowWidthEqual").length() > 0) {
colModel.setRowWidthEqual(element.getAttribute("rowWidthEqual"));
} else {
colModel.setRowWidthEqual("true");
} NodeList nodes = element.getChildNodes();
if (nodes != null) {
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equals("row")) {
parseRow(colModel, (Element) node);
} else {
log.error("元素名称" + node + "非法");
throw new Exception("元素名称" + node + "非法");
}
}
}
}
} else {
log.error("模型文件的根元素名必须为col");
throw new Exception("模型文件的根元素名必须为col");
}
return new UIComponent(colModel);
} private void parseRow(ColModel colModel, Element element) throws Exception {
RowModel rowModel = new RowModel(colModel); checkAttributeExist(element, "num");
checkAttributeExist(element, "type"); String type = element.getAttribute("type");
validateType(element, type); copyAttributes(element, rowModel); if (element.getAttribute("defaultHeight").length() > 0) {
rowModel.setDefaultHeight((this.toPositiveInteger(element,
"defaultHeight")));
} else {
rowModel.setDefaultHeight(colModel.getDefaultHeight());
} if (element.getAttribute("defaultWidth").length() > 0) {
rowModel.setDefaultWidth((this.toPositiveInteger(element,
"defaultWidth")));
} else {
rowModel.setDefaultWidth(colModel.getDefaultWidth());
} rowModel.setDefaultStyle(colModel.getDefaultStyle());
rowModel.setNum(element.getAttribute("num"));
rowModel.setType(element.getAttribute("type")); if (element.getAttribute("style").length() > 0) {
rowModel.setStyle(element.getAttribute("style"));
} else {
rowModel.setStyle(rowModel.getDefaultStyle());
} // 处理col子元素
NodeList nodes = element.getChildNodes();
if (nodes != null) {
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeName().equals("col")) {
parseCol(rowModel, (Element) node);
} else {
log.error("元素名称" + node + "非法");
throw new Exception("元素名称" + node + "非法");
}
}
}
} // 计算row(叶子节点)的高度和宽度
List<ColModel> childCols = rowModel.getChildCols();
int width = 0;
int height = 0;
if (childCols.size() == 0) {
if (element.getAttribute("height").length() > 0) {
height = this.toPositiveInteger(element, "height");
} else {
height = rowModel.getDefaultHeight();
} if (element.getAttribute("width").length() > 0) {
width = this.toPositiveInteger(element, "width");
} else {
width = rowModel.getDefaultWidth();
}
if (element.getAttribute("type").equals("tabFolder")) {
// TabFolder的Tab的高度设为25
height += 25;
width += 10;
}
rowModel.setHeight(height);
rowModel.setWidth(width);
}
// 以下属性的值将可能被重新覆盖为整型对象,方便后期读取和处理
// row部件的偏移量
if (element.getAttribute("offsetw").length() > 0) {
rowModel.setOffsetw((this.toPositiveInteger(element, "offsetw")));
} else {
rowModel.setOffsetw(0);
} if (element.getAttribute("offseth").length() > 0) {
rowModel.setOffseth((this.toInteger(element, "offseth")));
} else {
rowModel.setOffseth(0);
}
}