我无法搜索特定字符串xmlMatch的Hashtable。这是从一个特定的div标签的内容派生的在Hashtable中搜索字符串 - Java
我已经包含了我用来搜索XML和定义String xmlMatch的代码。我相信这是正确的,并已通过将其打印到屏幕上显示出来。我知道这应该很简单。我创建了一个快速测试Hashtable,同样的东西在那里工作。
我的测试代码 - 工程
按预期工作,打印以下在Eclipse控制台
真正
DOS
我的生产代码 - 不工作
if(startPosition >1)
{
out.println("startPosition is greater or equal to 1 ");
int subStringIndex = startPosition + startTag.length();
subStringIndex = subStringIndex + 2; // +2 is necessary to remove "> after sliceXML
out.println(subStringIndex);
int endPosition = testContent.indexOf(endTag, subStringIndex);
out.println(endPosition);
if(endPosition >= startPosition)
{
xmlMatch = testContent.substring(subStringIndex, endPosition);
//out.println("This is my xmlMatch " + xmlMatch); //prints Florida
}
上述print语句(启动时)确认xmlMatch是佛罗里达
然后我实现一个简单的哈希表
Hashtable<String, String> table = new Hashtable<String, String>();
table.put("Florida","/PathToFile.txt");
table.put("Telescope","/PathToFile2.txt");
table.put("Galaxy","/PathToFile3.txt");
这是我的问题开始!
out.println(table.containsKey(xmlMatch));
上面打印语句打印假到屏幕上 - 我相信这等于佛罗里达州是Hashtable中它应打印作为xmlMatch真。
String n = table.get(xmlMatch);
out.println(n);
而这种打印空 - 我相信这应该打印/PathToFile.txt
但是,如果我只是这样做
out.println(xmlMatch);
它再次打印佛罗里达屏幕
我究竟做错了什么?我只是想能够搜索我的Hashtable的特定字符串。任何帮助一如既往,非常感谢。
编辑: 难道我有大写字母的问题,也许我的xmlMatch是传递一个额外的空格字符?例如“佛罗里达”
EDIT 2 我的XML div标签简单地读取
<sliceXML>Florida</sliceXML>
解决SOLUTION 我在这里加入这个,因为它是一个解决问题的办法,但不是这个问题我问。
在Joe K的帮助下,我检查了我的endTag,发现我无法正确编码正斜杠。我发布了我的工作回答here
您是否检查过:'System.out.println(“Florida”.equals(xmlMatch))'是否显示为真?例如可能会有一个额外的空间。 – assylias
您提到内容来自div标签。所以你可以指出out.println(xmlMatch.length())的结果。我怀疑你可能在字符串中有一些潜伏的空间。您应该尝试使用xmlMatch.trim()来删除字符串前后的空格。 – randominstanceOfLivingThing
@ assylias我刚刚检查过 - 它打印错误 - 但是当我尝试out.println(xmlMatch);佛罗里达被打印到页面上。正如下面的Joao Silva所建议的,我试图修剪xmlMatch,但它仍然在屏幕上输出null。这可能是问题的组合吗? – Deepend