读书人

java 是如何解析xml文件的

发布时间: 2012-03-28 15:40:03 作者: rapoo

java 是怎么解析xml文件的啊
1 请问 java 是怎么解析xml文件的啊
2 如果一个布局管理xml 被一个 java读 这个xml是怎么转化的啊 →_→

[解决办法]
你可以看下 dom4j 。现在一般都用这个解析xml的。 具体的代码我也有点忘了。 不过网上好多。 你可以搜搜好多资料。希望可以帮到你。
[解决办法]
这个问题高深,我是来打酱油的,顺便帮楼主顶顶!!!
[解决办法]
1.java解析xml常见的技术有 dom、sax、jdom、dom4j,各有特点。dom4j较常用
具体代码可以百度,很简单。

2.不懂
[解决办法]
个人觉得。。dom4j解析xml比较好用。。。
[解决办法]
1.dom4j
2.建议参考android 中布局XML文件的原理,我也不太懂
[解决办法]
不管是哪种,原理都是读取文件,只不过这个文件是有格式的,我们就按一定的格式读取就好了
[解决办法]
有很多方法,常用的有Jdom,dom4j,google下一大把实例,自己看看就知道了
[解决办法]
最好是dom4j吧!~我学的就是用的这种解析的!~具体代码还真是网上搜吧!~我备份的丢了。。。
[解决办法]
感觉读取xml用sax最好。
[解决办法]
楼主头像是本人么,求交往
我是来泡妞的,哈哈
也可以将该xml先转换成json,然后解析
[解决办法]
楼主头像是本人么,求交往
我是来打酱油和泡妞的,哈哈
dom4j
[解决办法]
我说楼上你有病吧,你怎么不在大马路上啦个女生说你愿意和我行交吗 再说楼主连个XML都不能解析还能要你干什么
[解决办法]
不和楼上煞笔一般见识,每个人都有自己知道的领域
哥泡妞干你鸟事,再说楼主说的这么抽象,你个煞笔给解释一下啊
[解决办法]
ls有很多解决方案了 建议使用dom4j 好用
[解决办法]
以前项目中的代码

Java code
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.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();
}}



[解决办法]
我是挂项目的 那些东西 我都没接触啊 我贴代码给你看看哦

<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);
}
}

读书人网 >Java Web开发

热点推荐