通过xml定义页面的字段,并解析这些字段

本文介绍了一种使用XML描述页面元素并通过Java解析生成HTML的方法。该方法利用XML定义页面字段、列表及表单,通过DOM解析器读取XML文件,并展示如何提取信息并计划将其转化为HTML页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      之前用过的一些技术,是用xml描述页面字段,表单,列表的,然后利用后台引擎,自动的生成html页面;然后利用自己研发的胶水语言(类似于freemarker),进行类似继承,之类的去冗余定义;

      然后自己做一个简单的解析,

 xml定义代码

<?xml version="1.0" encoding="UTF-8"?>
 <book id="1">//定义了一个根节点  
      //页面字段定义
      <field  name="Id" >
         <nullable>false</nullable>
         <type>string</type>
         <length>10</length>
         <maxlength>100</maxlength>
      </field>
      <field  name="Name" >
         <nullable>false</nullable>
         <type>string</type>
         <length>10</length>
         <maxlength>100</maxlength>
      </field>
      <field  name="Age" >
         <nullable>false</nullable>
         <type>int</type>
         <length>10</length>
         <maxlength>100</maxlength>
      </field>
       //列表显示字段定义
      <fieldlist id="queryList">Name,age</fieldlist>
      //表单内容定义
      <layout id="queryLayout">Name,age</layout>
</book>

下面是简单的java解析代码

package com.fanshe;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DomAnalysNew {
    public static void analyOneLayer(Node node)
    {   System.out.println("=========================field============================");
    	NodeList nodelist=node.getChildNodes();
    	for(int i=0;i<nodelist.getLength();i++)
    	{
    		Node nodeTemp=nodelist.item(i);
    		if(nodeTemp.getNodeType()==Node.ELEMENT_NODE)
    		{
    	    	System.out.println("节点名称:"+nodeTemp.getNodeName());
    		    System.out.println("节点内容:"+nodeTemp.getFirstChild().getNodeValue());
    		}
    	}
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
      DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
      try {
		DocumentBuilder db=dbf.newDocumentBuilder();
		Document d=db.parse("D:\\workspace\\threadL\\src\\com\\fanshe\\book.xml");
		NodeList field =d.getElementsByTagName("field");
		NodeList fieldList =d.getElementsByTagName("fieldlist");
		NodeList layout =d.getElementsByTagName("layout");
		//解析field
		for(int i=0;i<field.getLength();i++)
		{
			Node node=field.item(i);
			analyOneLayer(node);
		}
		//解析fieldlist
		 System.out.println("=========================fieldlist============================");
		for(int j=0;j<fieldList.getLength();j++)
		{
			Node node=fieldList.item(j);
			if(node.getNodeType()==Node.ELEMENT_NODE)
    		{
    	    	System.out.println("节点名称:"+node.getNodeName());
    		    System.out.println("节点内容:"+node.getFirstChild().getNodeValue());
    		}
		}
	    //解析layout
		 System.out.println("=========================layout============================");
		for(int i=0;i<layout.getLength();i++)
		{
			Node node=layout.item(i);
			if(node.getNodeType()==Node.ELEMENT_NODE)
    		{
    	    	System.out.println("节点名称:"+node.getNodeName());
    		    System.out.println("节点内容:"+node.getFirstChild().getNodeValue());
    		}
		}
		
	} catch (ParserConfigurationException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (SAXException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
      
	}

}

接下来就是要将解析后的内容用代码转化为html页面,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值