Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有人知道如何解析这样的文本文件吗?_Java_Android - Fatal编程技术网

Java 有人知道如何解析这样的文本文件吗?

Java 有人知道如何解析这样的文本文件吗?,java,android,Java,Android,我正在用JAVA开发Android应用程序 我有一个像这样的文本文件在互联网上 它是这样显示的 Name="testMusic1" Uri="http://www2.compute.com.tw/test1.mp3" Author="chali" Length=125 Icon="xxx" Lang="台语" Name="testMusic2" Uri="http://www2.compute.com.tw/test2.mp3" Author="yflin" Length=123 Icon="

我正在用JAVA开发Android应用程序

我有一个像这样的文本文件在互联网上

它是这样显示的

Name="testMusic1" Uri="http://www2.compute.com.tw/test1.mp3" Author="chali" Length=125 Icon="xxx" Lang="台语"
Name="testMusic2" Uri="http://www2.compute.com.tw/test2.mp3" Author="yflin" Length=123 Icon="xxx" Lang="国语"
Name="testMusic3" Uri="http://www2.compute.com.tw/test3.mp3" Author="kkj" Length=132 Icon="xxx" Lang="英文"
但据我所知,我知道如何解析.csv文件,也知道如何解析xml文件,使用XPath表示

但是!有没有更简单的方法来解析这样的文本文件/?? 有没有什么好的API可以用来解析这样的文本文件??? 还是使用JAVA扫描程序和useDelimiter

有没有用JAVA编写的示例??'因为我真的不能再查了。。。 已经搜索/调查了很长时间。
有人能帮我吗?

一种可能是String.split()

例如:

public class Split {

  static final String s = 
    "Name=\"testMusic1\"   Uri=\"http://www2.compute.com.tw/test1.mp3\"   Author=\"chali\"";

  public static void main (String[] args) {
    String[] nameValuePairs = s.split("\\s+"); // Split each item in string on whitespace (\s+)
    for (int i=0; i < nameValuePairs.length; i++) {
      String[] nv = nameValuePairs[i].split("=");  // Split the resulting name/value pair on "="
      System.out.println ("pair[" + i + "]: (" + nameValuePairs[i] + "), name=" + nv[0] + ", value=" + nv[1] + ".");
    }
  }

}

一种可能是String.split()

例如:

public class Split {

  static final String s = 
    "Name=\"testMusic1\"   Uri=\"http://www2.compute.com.tw/test1.mp3\"   Author=\"chali\"";

  public static void main (String[] args) {
    String[] nameValuePairs = s.split("\\s+"); // Split each item in string on whitespace (\s+)
    for (int i=0; i < nameValuePairs.length; i++) {
      String[] nv = nameValuePairs[i].split("=");  // Split the resulting name/value pair on "="
      System.out.println ("pair[" + i + "]: (" + nameValuePairs[i] + "), name=" + nv[0] + ", value=" + nv[1] + ".");
    }
  }

}

这是一个完整的测试工作程序。只需将此文件放在music.txt所在的位置并运行它。它还使用
扫描仪

import java.io.*;
import java.util.*;

public class Program {

    public static void main(String[] args) throws Exception{
        FileReader file = new FileReader("music.txt");
        Scanner scanner = new Scanner(file);
        while(scanner.hasNextLine()){
            String line = scanner.nextLine().trim();
            String[] tokens = line.split("\\s+");
            for(int i = 0; i < tokens.length; i++){
                String[] elements = tokens[i].split("=");
                System.out.println(elements[0] + ": " + elements[1]);
            }
            System.out.println();
        }
        scanner.close();
    }
}

VVV

这是一个经过测试的完整工作程序。只需将此文件放在music.txt所在的位置并运行它。它还使用
扫描仪

import java.io.*;
import java.util.*;

public class Program {

    public static void main(String[] args) throws Exception{
        FileReader file = new FileReader("music.txt");
        Scanner scanner = new Scanner(file);
        while(scanner.hasNextLine()){
            String line = scanner.nextLine().trim();
            String[] tokens = line.split("\\s+");
            for(int i = 0; i < tokens.length; i++){
                String[] elements = tokens[i].split("=");
                System.out.println(elements[0] + ": " + elements[1]);
            }
            System.out.println();
        }
        scanner.close();
    }
}

VVV

这里的问题是您没有为输入提供正确的语法,设计基于解析器的示例是。。。狡猾的

例如,如果我们假设所有示例都是这样的,那么
String.split(\\s+”)
后跟
String.split(“=”)
将完成此任务。或者您也可以使用
扫描仪
执行同样的操作

但如果其他例子(你还没有看到)有点不同,这可能不起作用。例如:

  • 键/值对的顺序可能不同
  • 键名称可能有不同的大小写
  • 键名称可能包含空格
  • 这些值可能包含空格
  • 带引号的字符串中可能有一些转义约定来处理嵌入的引号字符,等等
  • 值的结束引号和下一个键名之间可能没有空格

简而言之,这些示例中是否有足够的信息可供您(或任何人)实现适用于所有输入的解析器是值得怀疑的。

这里的问题是您没有为输入提供正确的语法,而设计基于解析器的示例是。。。狡猾的

例如,如果我们假设所有示例都是这样的,那么
String.split(\\s+”)
后跟
String.split(“=”)
将完成此任务。或者您也可以使用
扫描仪
执行同样的操作

但如果其他例子(你还没有看到)有点不同,这可能不起作用。例如:

  • 键/值对的顺序可能不同
  • 键名称可能有不同的大小写
  • 键名称可能包含空格
  • 这些值可能包含空格
  • 带引号的字符串中可能有一些转义约定来处理嵌入的引号字符,等等
  • 值的结束引号和下一个键名之间可能没有空格

简言之,这些示例中是否有足够的信息供您(或任何人)实现一个适用于所有输入的解析器是值得怀疑的。

您看过String.split()吗?在每行后面添加
并使用XML解析器怎么样D@CommuSoft-如果这些“字符串”中的任何一个包含
,则该操作将失败。(是的……我看到了笑脸。)但它看起来不像字符串将包含
,这样的字符可以被
以及
&
替换为
&
您看过String.split()了吗?在每行后面添加
并使用XML解析器怎么样D@CommuSoft-如果这些“字符串”中的任何一个包含
,则该操作将失败。(是的……我看到了笑脸。)但它看起来不像字符串将包含
,这样的字符可以被
以及
&
替换为
&谢谢,伙计。希望对你有帮助。谢谢你,伙计。希望对你有帮助。