我在xml里删除一个结点的时候总会空出来一样,由于对这个xml文件操作会比较频繁,这样的话空行就会特别多,
请教一下如何删除结点的时候连同那个空行一起删除?或者直接扫描xml文件去除里面的空行?

解决方案 »

  1.   

    空格我去了,结果是一样的,<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <commands>
    <command>
    <name>help</name>
    <class>commandLine.commands.help</class>
    </command>
    <command>
    <name>add</name>
    <class>commandLine.commands.add</class>
    </command>
    <command>
    <name>remove</name>
    <class>commandLine.commands.remove</class>
    </command></commands>这个是原来的xml,我删除最后一个command标签的时候这里就会空出一行,
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <commands>
    <command>
    <name>help</name>
    <class>commandLine.commands.help</class>
    </command>
    <command>
    <name>add</name>
    <class>commandLine.commands.add</class>
    </command>
    <command>
    <name>remove</name>
    <class>commandLine.commands.remove</class>
    </command></commands>
      

  2.   

    上面的下面代码里多粘贴了一行<?xml version="1.0" encoding="UTF-8" standalone="no"?> ,对不起
      

  3.   

    包括回车符,变成这种格式<aaa>...</aaa><bbb>...</bbb>
      

  4.   

    现在还有个问题,删除的话可以,但是插入的时候,结点后会自动加入一个回车,就变成
    <command><name>remove </name><class>commandLine.commands.remove </class></command>
    </commands>
    然后删除的时候,就又会空出一行来了请问插入的时候怎么可以没有加一个回车?
      

  5.   

    代码如下
            private Document xmldoc = null;
            ............        public void addCmd(Command command){
    System.out.println("ComdCtrl.addCmd()");
    Node commandsNode = xmldoc.getElementsByTagName("commands").item(0);

    Node commandNode = xmldoc.createElement("command");

    Node nameNode =  xmldoc.createElement("name");
    nameNode.setTextContent(command.getCmdName());
    commandNode.appendChild(nameNode);

    Node classNode =  xmldoc.createElement("class");
    classNode.setTextContent(command.getCmdClass());
    commandNode.appendChild(classNode);

    commandsNode.appendChild(commandNode);

    saveXml(cmdFilePath, xmldoc);
    }        private void saveXml(String fileName, Document doc) {
    TransformerFactory transFactory=TransformerFactory.newInstance();
    try {
    Transformer transformer = transFactory.newTransformer();
    transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource();
    source.setNode(doc);
    StreamResult result=new StreamResult();
    result.setOutputStream(new FileOutputStream(fileName));
                
    transformer.transform(source, result);

    catch (TransformerConfigurationException e) {
    e.printStackTrace();

    catch (TransformerException e) {
    e.printStackTrace();

    catch (FileNotFoundException e) {
    e.printStackTrace();
    }   
    }基本上是考过来的代码,我只修改了一些必要的部分,可能是那些参数需要设定,或者没弄好,请大家帮忙看看
      

  6.   

    transformer.setOutputProperty("indent", "yes"); 
    没用过这个方法原本空格和空行就没有影响,非要去掉;生成的时候,难道就不能同样方法去掉?