有一个String中存放这XML文档的内容,如下:
<books>
<title/>
<author/>
<price/>
</book>
我想把这个内容输出以下格式:
<books>
   <title/>
   <author/>
   <price/>
</book>当然,String中存放的XML文档不止这么简单,上面仅仅是举例说明.
请高手一定帮我解决下啊
我会即时结贴给分的.谢谢了

解决方案 »

  1.   

    你要直接格式化String中的东西不是不行,只是较麻烦,当XML文档结构更麻烦的时候格式化就比较繁琐了,若最终目的只是输出XML文档的话可以使用变通的方法
      

  2.   

    :( 没看明白
    :) 话说两句:
      最后的一个</book>少了个s哦,哈哈。
      如果要使得输出的 xml 文件格式化的话,dom4j很简单就能搞定。
      

  3.   

    文件-->另存为  "*.xml" -->保存
      

  4.   

    随便写了个解你的XML的String的,当然假设了你的String中使用的\r\n换行,构造的时候把String传进去,tran的参数是你缩进的样式(多少个空格自己敲就好了)
    class format
    {
    private String[] list;
    public format(String str)
    {
    list=str.split("\r\n");
    }

    private String take(String data)
    {
    if(data.startsWith("</"))
    return data.substring(3,data.length()-1);
    else if(data.endsWith("/>"))
    return data.substring(2,data.length()-2);
    else if(data.matches("<.*>"))
    return data.substring(2,data.length()-1);
    else return data;
    }

    public String tran(String indent)
    {
    StringBuffer sb=new StringBuffer();
    String Indent=indent;
    String space="";
    List tmp=new ArrayList();
    for(int j=0;j<list.length;j++)
    {
    String d=(String)list[j];
    if(!tmp.contains(d)&&d.indexOf("/")==-1&&d.indexOf("<")!=-1)
    {
    sb.append(space+d+"\r\n");
    tmp.add(take(d));
    space=space+Indent;

    }
    else
    {

    if(tmp.contains(take(d))&&d.startsWith("</"))
    {
    tmp.remove(take(d));
    space=space.substring(0,space.length()-Indent.length());
    sb.append(space);
    sb.append(d);
    }
    else if(d.endsWith("/>"))
    {
    sb.append(space);
    sb.append(d);
    }
    else 
    {
    sb.append(space);
    sb.append(d);
    }
    sb.append("\r\n");
    }

    }
    return sb.toString();
    }}
      

  5.   

    windstear1(枯枝烂叶也是宝) 真牛
    我想了几天的问题
    你居然在我发帖后不到两小时就解决了学习,致敬