Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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_Html_String_Parsing_Compare - Fatal编程技术网

Java 等于不为我工作

Java 等于不为我工作,java,html,string,parsing,compare,Java,Html,String,Parsing,Compare,这是代码的有用部分: java.util.List<Element> elems = src.getAllElements(); Iterator it = elems.iterator(); Element el; String key,value,date="",place=""; String [] data; int k=0; Segment content; String contentstr; String classname; while(it.hasNext()){

这是代码的有用部分:

java.util.List<Element> elems = src.getAllElements();
Iterator it = elems.iterator();
Element el;
String key,value,date="",place="";
String [] data;
int k=0;
Segment content;
String contentstr;
String classname;

while(it.hasNext()){

    el = (Element)it.next();

    if(el.getName().equals("span"))
    {

            classname=el.getAttributeValue("class");
        if(classname.equals("edit_body"))
        {
            //java.util.List<Element> elemsinner = el.getChildElements();
            //Iterator itinner = elemsinner.iterator();


            content=el.getContent();

            contentstr=content.toString();


            if(true)
            {


                System.out.println("Done!");

                System.out.println(classname);

                System.out.println(contentstr);


            }
       }
    }

}
无法获取错误部分。。。救命啊

我正在使用外部java库BTW进行html解析


顺便说一句,在输出的开始处有两个错误,这两种情况下都存在,有或没有if条件:

Dec 20, 2012 11:53:11 AM net.htmlparser.jericho.LoggerProviderJava$JavaLogger error SEVERE: EndTag br at (r1992,c60,p94048) not recognised as type '/normal' because its name and closing delimiter are separated by characters other than white space 

Dec 20, 2012 11:53:11 AM net.htmlparser.jericho.LoggerProviderJava$JavaLogger error SEVERE: Encountered possible EndTag at (r1992,c60,p94048) whose content does not match a registered EndTagType 
希望这不会造成错误

好了,伙计们,谁来给我解释一下!“编辑主体”。等于(el.getAttributeValue(“类”))有效

看起来您的
类名中有前导空格或尾随空格

尝试使用以下方法:-

if(classname.trim().equals("edit_body"))

这将修剪末端的任何空白。

首先,
String.equals()
不会被打断。它适用于数百万其他程序/程序员。这不是问题的原因(除非您或其他人故意修改…并破坏了Java安装…)

那么,为什么两个明显相等的字符串可以比较为不相等呢

  • 字符串上可能有前导或尾随空白字符
  • 可能有嵌入的非打印字符
  • 当您使用典型字体显示Unicode字符对时,它们可能看起来相同,但实际上并不相同。例如,希腊语代码页包含按拉丁元音显示的字符。。。但实际上是不同的代码,因此并不相等
  • 将代码更改为:

    classname="edit_body"; //<- hardcode 
    
    if(classname.equals("edit_body"))
    

    classname=“编辑正文”// 我现在也有同样的问题

    通过使用:
    SomeStringVar.replaceAll(“\\p{Print},”)成功地解决了这个问题

    此命令删除变体中的所有Unicode字符(您看不到的字符-字符串看起来相等,即使它们实际上并不相等)

    我对均衡中所需的每个变量使用此命令,它也适用于我。

    equals()是String类的一个方法。因此,它使用双引号

     if(someString.equals("something")) ✓
     if(someString.equals('something')) ×
    

    做一个
    System.out.println(el.getName())
    它应该超出的范围。在我们开始帮助之前,你的代码缺少关键部分。src.getAllegements();实际输出什么?元素#getName的API是什么?假设字符串上的equals不起作用,那么您真的认为如果字符串上的equals方法不起作用,java仍然是活着的。一般来说,当有人认为java API被破坏时,99.999%的情况下不是java而是他们自己的代码。当然,
    src.getAllegements
    会给出输出,因为如果我删除给定的
    if
    条件,迭代器就可以完美地工作。。getName()以字符串形式提供标记的名称。。。很明显,我不认为equals方法有问题,或者JAVA API有问题,否则我就不会寻求你的帮助。。这个问题的标题是我能给出的最接近的短语!我从来没有遇到过这个问题,但是尝试将两个字符串转换为同一个字符集?然后比较字节数组。@Arkanath。。你确定吗?尝试替换
    System.out.println(classname)带:-
    System.out.println(“*”+classname+“*”)并查看您得到了什么。当然,如果
    ,首先要删除该
    。不幸的是,它将变成编辑体!。。。“编辑”正文文本已被斜体化,原因是*s@Arkanath.. 啊!!对不起<代码>*
    我想是斜体的。将
    *
    替换为
    -
    ,然后查看您得到的输出是:-
    -edit\u body-
    ,带空格还是
    -edit\u body-
    不带空格。@Arkanath。。好吧,现在有点奇怪了。请显示并使用您试图解析的HTML部分。只有包含该文本的部分。顺便说一句,在输出的开头有两个错误,无论是否有if条件,这两种情况下都存在。:
    Dec 20,2012 11:53:11 AM net.htmlparser.jericho.LoggerProviderJava$JavaLogger错误严重:EndTag br at(r1992,c60,p94048)无法识别为类型“/normal”,因为其名称和结束分隔符由除空格以外的字符分隔,2012年12月20日11:53:11 AM net.htmlparser.jericho.LoggerProviderJava$JavaLogger错误严重:在(r1992,c60,p94048)处遇到可能的EndTag其内容与注册的EndTagType不匹配
    希望这不会导致错误我是说String.equals()已损坏吗?我是说它不工作,即不工作!!不管怎样,你给我解释一下:
    “编辑主体”。等于(el.getAttributeValue(“类”))
    有效!这听起来像是我的场景3中会发生的事情。具体地说,不起作用的代码版本在源代码中嵌入了一个“looks-like-a-Latin-letter-but-is-not”字符。或者它可能在网页中(尽管考虑到新版本的代码可以工作,这似乎不太可能)。不工作==坏了。不为我工作!=不工作。在我看来,String.equals方法完全按照指定的方式工作,并且您得到的结果完全按照规范所说的那样。问题在于你使用它的方式。你只需要以调试问题的方式进行取证。是的,这就是问题所在,新版本中发生了什么??我是说这让我很惊讶!请看我写的东西。。。我已经解释了(两次!!)根本原因。我不知道你是如何把“时髦”的角色融入到你的源代码中的……太完美了!这就是我现在所缺少的代码。。。谢谢
     if(someString.equals("something")) ✓
     if(someString.equals('something')) ×