我正在研究能够从xml文件中删除与给定值匹配的节点,例如。
如果节点id等于3则将其删除
这是我的问题我正在比较2个字符串,一个是表示我们正在查找的字符串,另一个是节点值,它们都完全相同但是它们在.equals()中返回false
我正在传递的字符串=" James1" 找到字符串=" James1"
这两个字符串之间没有任何差异吗?
if (value.item(j).getAttributes().getNamedItem("column").getNodeValue().equals(where)) {
Log.d("DataStore", "Node Value: " + value.item(j).getTextContent() + " length: " + value.item(j).getTextContent().length() + " equal to: " + equalTo + " length: " + equalTo.length());
if (value.item(j).getTextContent().equalsIgnoreCase(equalTo)) {
dataNode.removeChild(rows.item(i));
count++;
}
}
这一行是失败但应该成功的地方
if (value.item(j).getTextContent().equalsIgnoreCase(equalTo)) {
当它到达那里时,它会记录下来,我可以向你保证这些字符串是完全相同的。
Node Value: James2 length: 6 equal to: James2 length: 6
答案 0 :(得分:0)
您没有提供足够的数据来提供明确的答案。
在if失败之前添加此行:
CAST ( expression AS data_type )
将此方法添加到您的类或实用程序类
compareStr( value.item(j).getTextContent(), equalTo);
它会告诉你两个字符串的不同之处。
如果它们仍然相等,那么你应该考虑所涉及的方法是否有副作用。
将您的代码更改为:
public static void compareStr(Object a, Object b)
{
if (a==null && b==null)
{
System.out.println("Both null");
return;
}
if ( a==null || b==null )
{
System.out.println( "1st String is "
+ ( a==null ? "" : "not " )
+ "but 2nd String is "
+ ( b==null ? "" : "not " )
+ "null" );
return;
}
if ( !( a instanceof String) )
{
System.out.println( "1st Object is not a String");
return;
}
if ( !( b instanceof String) )
{
System.out.println( "2nd Object is not a String");
return;
}
String s = (String)a;
String t = (String)b;
if ( s.length()!=t.length() )
{
System.out.println( "Lenghts differ");
return;
}
for ( int i=0; i<s.length(); ++i )
{
if ( s.charAt(i)!=t.charAt(i) )
{
System.out.println( "The character at position " + i + " are different.");
return;
}
}
System.out.println("Strings are equal");
}