我無法搜索特定字符串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