有没有办法从java中的xml文件中提取URL并删除这些URL?

时间:2017-09-06 00:04:11

标签: java xml

我正在尝试编写一个从服务器删除文件的简单程序。我已经读取了xml的文件,但它没有从删除文件中提取程序编译没有错误,但我觉得我遗漏了一些会从xml中提取网址的内容。这是我到目前为止所拥有的。我知道它可能很容易,但我已经坚持了一段时间。

add_action( 'template_redirect', 'wpsites_attachment_redirect' );
function wpsites_attachment_redirect(){
global $post;
if ( is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent != 0) ) :

    $actual_link = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $actual_link = $actual_link.'/'.$post->post_parent;
    $actual_link = str_replace('/wp/','/',$actual_link);
    wp_redirect( $actual_link, 301 );
    exit();
    wp_reset_postdata();
    endif;
}

以下是XML

的示例
import folder.AvailableBuilds;
import java.io.File;

public class Cleaner {


public static void main(String[] args) {
    File file = new File("xtf.xml");


    JAXBContext configContext;
    try {
        configContext = JAXBContext.newInstance("path");
        Unmarshaller unmarshaller = configContext.createUnmarshaller();
        AvailableBuilds theBuilds = (AvailableBuilds) unmarshaller.unmarshal(file);
   for (AvailableBuilds.BuildGroup group: theBuilds.getBuildGroup()) {
       System.out.println("" + group.getType());

   }
    } catch (JAXBException e) {
        e.printStackTrace();
    }

    String[] x;
    if(file.isDirectory()){
        x = file.list();
        for (int i=0; i<x.length; i++) {
            File files = new File("xtf.xml");
            files.delete();
        }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

首先,你需要分开两件事:

  • 获取要删除的路径列表
  • 删除该路径下的文件(和目录?)

我会为此写两种不同的方法。

目前,我不了解您是如何从XML获取路径的,但您已经接近删除文件了。

除外
File files = new File("xtf.xml");
files.delete();

实际上删除了XML文件本身。

知道我不知道您的XML文件格式以及您将如何解析它,让我们假设它将返回一个路径列表。

public static void main(String[] args) {

    List<String> filePaths = getFilePathsFromXML( "xtf.xml" );

    for ( String path : filePaths ) {
        deleteRecursively( path );
    }
}

/**
 * Deletes a file or folder. If a given path is a folder then deletes all files and folders recursively first
 *
 * @param String path - path of a file or directory
**/
static void deleteRecursively( String path ) {
    File file = new File( path );
    if ( file.isDirectory() ) {
        for ( String subPath : file.list() ) {
            deleteRecursively( subPath );
        }
    }
    try {
        file.delete();
    } catch ( Exception e ) {
        e.printStackTrace();
    }
}

/**
 * Gets a list of file pats from an XML file.
 *
 * @param String fileName - the XML file name for reading
**/
static List<String> getFilePathsFromXML( String fileName ) {
    List<String> result = new ArrayList<String>();
    // figure out how to read paths from file
    return result;
}