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

解决方案 »

  1.   

      你可以看下 dom4j 。现在一般都用这个解析xml的。 具体的代码我也有点忘了。 不过网上好多。 你可以搜搜好多资料。希望可以帮到你。
      

  2.   

    1.java解析xml常见的技术有 dom、sax、jdom、dom4j,各有特点。dom4j较常用
        具体代码可以百度,很简单。2.不懂
      

  3.   

    个人觉得。。dom4j解析xml比较好用
      

  4.   

    1.dom4j
    2.建议参考android 中布局XML文件的原理,我也不太懂
      

  5.   

    有很多方法,常用的有Jdom,dom4j,google下一大把实例,自己看看就知道了
      

  6.   

    最好是dom4j吧!~我学的就是用的这种解析的!~具体代码还真是网上搜吧!~我备份的丢了
      

  7.   

    楼主头像是本人么,求交往
    我是来泡妞的,哈哈
    也可以将该xml先转换成json,然后解析
      

  8.   

    楼主头像是本人么,求交往
    我是来打酱油和泡妞的,哈哈
    dom4j
      

  9.   

    我说楼上你有病吧,你怎么不在大马路上啦个女生说你愿意和我行交吗 再说楼主连个XML都不能解析还能要你干什么
      

  10.   

    ls有很多解决方案了 建议使用dom4j 好用
      

  11.   

    以前项目中的代码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");
    }
      

  12.   

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

  13.   

    我是挂项目的 那些东西 我都没接触啊 我贴代码给你看看哦<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>
      

  14.   

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