public void function_saveEditorData(String name)
      {
            if (name == null || name.length() < 4)
            {
                  System.out.println("不合法的文件名!");
  return;
    }                        
            try
            {
                  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                  DocumentBuilder builder = factory.newDocumentBuilder();
                  Document doc = builder.newDocument();
                  Element root = doc.createElement("Map");
                  doc.appendChild(root);    
                  
                  //开始输出编辑器数据
                  //首先在根结点root上输出基本信息
                  root.setAttribute("type",String.valueOf(MapDataManager.m_nMapType));
           
//                  root.setAttribute("TitleWidth",String.valueOf(MapDataManager.m_nTitleWidth));
//                  root.setAttribute("TitleHeight",String.valueOf(MapDataManager.m_nTitleHeight));
                  boolean state = false ;
  try
  {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(name));
transformer.transform(source, result);
                        state = true ;
  } catch (TransformerConfigurationException ex1)
  {
                        ex1.printStackTrace();
  } catch (TransformerException ex1)
  {
                        ex1.printStackTrace();
  } catch (TransformerFactoryConfigurationError ex1)
  {
                        ex1.printStackTrace();
  }
                  if (state)
                  {
                        System.out.println("文件" + name + "成功保存!" );
                  } 
            } catch (Exception ex)
            {
                  ex.printStackTrace();
            }
      }

解决方案 »

  1.   

    一个非常奇怪的问题,我把这段代码拿到一个测试程序中又是可以的,是不是跟线程同步有关?
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    import org.w3c.dom.*;
    import java.io.*;
    import javax.xml.parsers.*;
    import java.util.*;public class TransTest
    {
        public static void main(String[] args)
        {           
                try
                {
                      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                      DocumentBuilder builder = factory.newDocumentBuilder();
                      Document doc = builder.newDocument();
                      Element root = doc.createElement("Map");
                      doc.appendChild(root);    
                      
                      //开始输出编辑器数据
                      //首先在根结点root上输出基本信息
                      root.setAttribute("type","1");
                      root.setAttribute("风格","0");
                      root.setAttribute("类型","1");
                      root.setAttribute("双图层","否");
                      root.setAttribute("地图块网格线","不显示");
                      root.setAttribute("地图网格线","不显示");
                      root.setAttribute("Title网格线","不显示");
                      root.setAttribute("网格线","不显示");
                      root.setAttribute("差异色显示翻转","是");
                      
                      root.setAttribute("TitleWidth","32");
                      root.setAttribute("TitleHeight","32");
                      root.setAttribute("MapWidth","32");
                      root.setAttribute("MapHeight","32");
                      root.setAttribute("图片索引","1");
                      
                      //基本信息在上面已经保存完毕,然后是图片列表以及两个TitleGroup的信息:m_nMapTitle以及m_nBgTitle
                      Element forceGround = doc.createElement("前景层") ;
                      root.appendChild(forceGround) ;
                      Element backGround = doc.createElement("背景层") ;
                      root.appendChild(backGround) ;
                         try
      {
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Transformer transformer = tFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File("1.xml"));
    transformer.transform(source, result);
      } catch (TransformerConfigurationException ex1)
      {
                            ex1.printStackTrace();
      } catch (TransformerException ex1)
      {
                            ex1.printStackTrace();
      } catch (TransformerFactoryConfigurationError ex1)
      {
                            ex1.printStackTrace();
      }            } catch (Exception ex)
                {
                      ex.printStackTrace();
                }
          }
    }