如何使用Java解析HTML标记中的数据

如何使用Java解析HTML标记中的数据,java,string,Java,String,我从一个网站中获取一个字符串,该字符串沿着我想要获取的文本行查看,并删除括号和括号中的文本,但是,我的最终结果总是空的 我想说的是 try { String desc = null; StringBuilder sb = new StringBuilder(); BufferedReader r = new BufferedReader(new InputStreamReader(in)); String line = null;

我从一个网站中获取一个字符串,该字符串沿着我想要获取的
文本行查看,并删除括号和括号中的文本,但是,我的最终结果总是空的

我想说的是

try {
        String desc = null;
        StringBuilder sb = new StringBuilder();
        BufferedReader r = new BufferedReader(new InputStreamReader(in));
        String line = null;
        boolean codeBlock;
        codeBlock = false;

        line = "<HTMLCODEHERE>Text I want to get";
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STARTING DESC: " + line);

        while((line = r.readLine()) != null) {
            if((line = r.readLine()) == "<") {
                codeBlock = true;
            }
            if((line = r.readLine()) == ">") {
                codeBlock = false;
            }
            if(!codeBlock) {
                sb.append(line);
                desc = sb.toString();
            }
        }

        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ENDING DESC: " + desc);
        holder.txtContent.setText(desc);
    } catch (IOException e) {
        e.printStackTrace();
    }
试试看{
字符串desc=null;
StringBuilder sb=新的StringBuilder();
BufferedReader r=新的BufferedReader(新的InputStreamReader(in));
字符串行=null;
布尔码块;
代码块=假;
line=“我想要得到的文本”;
System.out.println(“!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!开始描述:+行);
而((line=r.readLine())!=null){
如果((line=r.readLine())==“”){
代码块=假;
}
if(!代码块){
某人附加(行);
desc=sb.toString();
}
}
System.out.println(“!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!结束描述:“+DESC”;
holder.txtContent.setText(desc);
}捕获(IOE异常){
e、 printStackTrace();
}

看看BufferedReader的Java API,即readline:

读一行文字。一条线路被视为由以下任意一条线路终止: 换行符('\n')、回车符('\r')或回车符 紧接着是换行符

因此,请在此处输入您的代码:

if((line = r.readLine()) == "<") {
    codeBlock = true;
}
if((line = r.readLine()) == ">") {
    codeBlock = false;
}

你用调试器运行代码了吗?这是你最好的选择,因为我们不知道读者收到的是什么类型的输入。你能分享一个输入的例子吗?你能分享一个输入的例子吗?此外,您还应该检查正则表达式,它们在这种情况下会对您有很大帮助…仔细验证您的if语句-一行只包含一个字符类型
?我肯定会研究它的可能重复项,但我的问题是,我的字符串是“我不需要的代码>我要保留的文本”. 我在上面的帖子中的评论有一个我试图解析的字符串示例。从上面提供的HTML中,我的示例将返回:
,该季节的第一场雪将在周四早上开始“
这不是你想要的行为吗?这正是我想要的!很抱歉,我第一次读你的代码时有点困惑。非常感谢你!
String parse = "<HTMLCODE>My favourite pasta is spaghetti, followed by ravioli</HTMLCODE>";

final char TAG_START = '<';
final char TAG_END = '>';

StringBuilder sb = new StringBuilder();

char[] parseChars = parse.toCharArray();

boolean inTag = true;
for (int i = 0; i< parseChars.length; i++) {
    if (parseChars[i] == TAG_START) {
        inTag = true;
        continue;
    }
    else if (parseChars[i] == TAG_END) {
        inTag = false;
        continue;
    }
    if (!inTag) {
        sb.append(parseChars[i]);
    }
}

System.out.println(sb.toString());