可以考虑使用sax或者jdom来解析xml,你可以看看sax和jdom!

解决方案 »

  1.   

    从XML解析显示在html一般是用XSLT
    解析XML的同时输出html代码
      

  2.   

    干嘛还要通过xml?
    解析XML本身就是很需要时间的.
      

  3.   

    需要写一个专门用来解析XML文件的类才行...
      

  4.   

    XMLMaker.java----------
    import java.io.Serializable;
    import java.util.Vector;import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Text;
    public class XMLMake implements Serializable {
    private Document doc;
    private StringBuffer rs;
    private Element rootElem;public XMLMake() {
    try
    {
    rs = new StringBuffer();
    doc = (Document)Class.forName("weblogic.apache.xerces.dom.DocumentImpl").newInstance();
    rootElem = doc.createElement("Root");
    doc.appendChild(rootElem);
    }
    catch (Exception e)
    {
        System.err.println(e);
    }
    }public String getResult() {
    printDOMTree(doc);
    String retString = rs.toString();
    return retString;
    }public void printDOMTree(Node node) {
    try{
        int type = node.getNodeType();
        switch (type)
        {
          // print the document element
          case Node.DOCUMENT_NODE:
            {
              rs.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
              printDOMTree(((Document)node).getDocumentElement());
              break;
            }         // print element with attributes
          case Node.ELEMENT_NODE:
            {
              rs.append("<");
              rs.append(node.getNodeName());
              NamedNodeMap attrs = node.getAttributes();
              for (int i = 0; i < attrs.getLength(); i++)
              {
                Node attr = attrs.item(i);
                rs.append(" " + attr.getNodeName() +"=\"" + attr.getNodeValue() + "\"");
              }
              rs.append(">");           NodeList children = node.getChildNodes();
              if (children != null)
              {
                int len = children.getLength();
                for (int i = 0; i < len; i++)
                    printDOMTree(children.item(i));
              }           break;
            }         // handle entity reference nodes
          case Node.ENTITY_REFERENCE_NODE:
            {
              rs.append("&");
              rs.append(node.getNodeName());
              rs.append(";");
              break;
            }         // print cdata sections
          case Node.CDATA_SECTION_NODE:
            {
              rs.append("<![CDATA[");
              rs.append(node.getNodeValue());
              rs.append("]]>");
              break;
            }         // print text
          case Node.TEXT_NODE:
            {
              rs.append(node.getNodeValue());
              break;
            }         // print processing instruction
          case Node.PROCESSING_INSTRUCTION_NODE:
            {
              rs.append("<?");
              rs.append(node.getNodeName());
              String data = node.getNodeValue();
              {
                rs.append(" ");
                rs.append(data);
              }
              rs.append("?>");
              break;
            }
        }     if (type == Node.ELEMENT_NODE)
        {
          rs.append("</");
          rs.append(node.getNodeName());
          rs.append(">\n");
        }
    }
    catch (Exception e)
    {
        System.err.println(e);
    }     
    }public void setDocument(String name, Vector vec, Element parentElement) {
    try{
    Element thisRootElem = doc.createElement(name);
    parentElement.appendChild(thisRootElem);

    int i,size;
    size = vec.size();
    for(i = 1;i <= size;i = i + 2){
    if(Vector.class.isInstance(vec.elementAt(i))){
    setDocument((String)vec.elementAt(i - 1),(Vector)vec.elementAt(i),thisRootElem);
    }
    else{
    Element thisElem = doc.createElement((String)vec.elementAt(i - 1));
    Text thisText = doc.createTextNode("value");
    thisText.setNodeValue(vec.elementAt(i).toString());
    thisElem.appendChild(thisText);
    thisRootElem.appendChild(thisElem);
    }
    }
    }
    catch (Exception e)
    {
        System.err.println(e);
    }
    }public void setParameter(String name, Object[] beans) {
    try{
    for(int i = 0;i < beans.length;i++){
    setParameter(name,beans[i]);
    }
    }
    catch (Exception e)
    {
        System.err.println(e);
    }
    }public void setParameter(String name, Object bean) {
    try{
    Vector vec1;
    vec1 = ConversionUtils.convertBeanToVector(bean);
    setDocument(name,vec1,rootElem);
    }
    catch (Exception e)
    {
        System.err.println(e);
    }
    }
    }
      

  5.   

    XMLParser.java
    --------------------------
    import java.io.File;
    import java.io.FileWriter;
    import java.io.Serializable;
    import java.util.Vector;import org.w3c.dom.Document;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import weblogic.apache.xerces.parsers.DOMParser;
    public class XMLParser implements Serializable {
    DOMParser parser;
    Document doc;
    Object bean;
    Vector beanVec;public Vector getParameter(Node rootNode) {
    Vector rv = new Vector();
    try{
    NodeList nl = rootNode.getChildNodes();
    int nodeLength = nl.getLength();
    for(int i = 0;i < nodeLength;i++){
    Node thisNode = nl.item(i);
    String nodeName = thisNode.getNodeName();
    NodeList children = thisNode.getChildNodes();
    int childrenLength = children.getLength();
    if(children != null && childrenLength != 0){
    if(childrenLength == 1 && !(children.item(0).hasChildNodes())){
    Node child = children.item(0);
    String nodeValue = child.getNodeValue();
    rv.addElement(nodeName);
    rv.addElement(nodeValue);
    }
    else{
    NamedNodeMap attrs = thisNode.getAttributes();
    String packName = "";
    for (int j = 0; j < attrs.getLength(); j++)
    {
    Node attr = attrs.item(j);
    if(attr.getNodeName().equals("packName")){
    packName = attr.getNodeValue();
    }
    }
    Vector subVec = getParameter(thisNode);
    rv.addElement(packName + "&" + nodeName);
    rv.addElement(subVec);
    }
    }
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    return rv;
    }public Vector getResult() {
    return beanVec;
    }/**
     * XMLParser 构造子注释
     */
    public XMLParser(String inputStr) {
    try{
    beanVec = new Vector();
    parser = new DOMParser();
    String fileName = StringUtil.getRandomNumber().toString().substring(0,8);
    String filePath = "c:\\Temp\\"; //保存地址
    File tempFile = new File(filePath + fileName + ".xml");
    FileWriter fw = new FileWriter(tempFile);
    fw.write(inputStr);
    fw.close();
    String documentURL = tempFile.toURL().toString();
    parser.parse(documentURL);
    doc = parser.getDocument();
    Vector rv = new Vector();
    Node rootNode = doc.getDocumentElement();
    String nodeName = rootNode.getNodeName(); NodeList nl = rootNode.getChildNodes();
    for(int i = 0;i < nl.getLength();i++){
    Node thisNode = nl.item(i);
    rv = getParameter(thisNode);
    NamedNodeMap attrs = thisNode.getAttributes();
    String packName = "";
    for (int j = 0; j < attrs.getLength(); j++)
    {
    Node attr = attrs.item(j);
    if(attr.getNodeName().equals("packName")){
    packName = attr.getNodeValue();
    }
    }
    Object retObj = ConversionUtils.convertVectorToBean(packName,rv);
    beanVec.addElement(retObj);
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }应该没问题的
      

  6.   

    先考虑一下你项目的需求
    需要什么样子的xml文件
    <Config>
        <User>user</User>
        <Password>password</Password>
    </Config>
    这样的文件是很好解析的
    <ServerConfig>
        <Server ServerId = "Server1">
            <Service ServiceId = "Service1">
            </Service>
            <Service ServiceId = "Service2">
            </Service>
        </Server>
        <Server ServerId = "Server2">
            <Service ServiceId = "Service1">
            </Service>
        </Server>
    </ServerConfig>
    这样的就需要递归算法
    先进行需求分析是十分必要
    磨刀不误砍材功
    根据需求尽快确定xml文件的形式
      

  7.   

    我也说不太清楚,没弄过这个阿。
    就是把数据库里的某个表的信息放到xml里,然后再显示在页面上,好像是这个意识。
    但是我搞不懂,是用表里的数据生成一个xml还是xml里定义了相应的字段,然后通过某种方法就能显示。
      

  8.   

    xml和数据库到底是什么关系呢?