这是代码的有用部分:
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);
}
}
}
}
没有输出。但是,如果我删除它确实打印的if(classname.equals("edit_body"))
条件(在其中一个迭代中):
Done!
edit_body
"I honestly think it is better to be a failure at something you love than to be a success at something you hate."
无法获取bug部分......帮助!
我正在使用外部java库BTW进行html解析。
BTW在输出开始时有两个错误,在两种情况下都存在,无论有无条件:
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
希望不会导致错误
好的伙计们,请有人解释一下! “edit_body”.equals(el.getAttributeValue(“class”))工作!!
答案 0 :(得分:9)
您的classname
中似乎有前导或尾随 空白。
尝试使用: -
if(classname.trim().equals("edit_body"))
这会修剪两端的任何空格。
答案 1 :(得分:9)
我现在遇到了完全相同的问题。
我成功通过使用:SomeStringVar.replaceAll("\\P{Print}","");
来解决它。
此命令删除变体中的所有Unicode字符(您无法看到的字符 - 字符串看起来相同,即使它们不相等)。
我在均衡中需要的每个变体上使用此命令,它也适用于我。
答案 2 :(得分:2)
首先,String.equals()
没有被打破。它适用于百万的其他程序/程序员。这不是您的问题的原因(除非您或某人故意修改......并破坏了您的Java安装......)
那么为什么两个明显相等的字符串比较不相等呢?
答案 3 :(得分:0)
将代码更改为:
classname="edit_body"; //<- hardcode
if(classname.equals("edit_body"))
如果代码现在输入if语句,那么当你使用原始的“classname = el.getAttributeValue(”class“);”时,字符串内容显然必须有所不同。 在这种情况下,循环遍历各个字符并进行比较以找出差异。
如果代码仍未输入if语句,则代码未编译且运行旧代码,或者java安装已损坏; - )
OR。
如果java就像.net(我不知道java) 将“el.getAttributeValue”键入为字符串? 如果它被输入为对象,那么if语句将不会输入,因为它们是同一个字符串的两个不同实例。
答案 4 :(得分:0)
equals()是String类的方法。因此,它可以使用双引号。
if(someString.equals("something")) ✓
if(someString.equals('something')) ×