我在为特定的String xmlMatch搜索Hashtable时遇到麻烦。这源自特定div标签的内容

我已经包含了用于搜索XML和定义String xmlMatch的代码。我相信这是正确的,并通过将其打印到屏幕上已显示出来。我知道这应该很简单。我创建了一个快速测试Hashtable,同样的东西在那里工作。

我的测试代码-作品

String xmlMatch2 = "Two";
Hashtable<String, String> table2 = new Hashtable <String, String>();
table2.put("One", "Uno");
table2.put("Two", "Dos");
table2.put("Three", "Tres");

System.out.println(table2.containsKey(xmlMatch2));
String n = table2.get("Two");
System.out.println(n);


按预期工作,将以下内容打印到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
    }


上面的打印语句(激活后)确认xmlMatch是Florida

然后,我实现一个简单的Hashtable

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));


上面的print语句在屏幕上打印false-我相信它应该打印为true,因为xmlMatch等于Hashtable中的Florida。

String n = table.get(xmlMatch);
out.println(n);


这会打印null-我相信这应该打印/PathToFile.txt

但是,如果我只是这样做

out.println(xmlMatch);


它再次将佛罗里达州打印到屏幕上

我究竟做错了什么?我只是希望能够在我的哈希表中搜索特定的字符串。任何帮助一如既往,非常感谢。

编辑:
是否可能我的大写字母有问题,或者我的xmlMatch是否传递了额外的空格字符?例如“佛罗里达”

编辑2
我的xml div标签只是读取

<sliceXML>Florida</sliceXML>


解决方案
我在这里添加它是因为它可以解决问题,但不能解决我提出的问题。

Joe K的帮助下,我检查了endTag,发现我无法正确编码正斜杠。我将我的工作发布在答案here周围

最佳答案

您的xmlMatch中可能有空格,请使用trim()删除它们:

String n = table.get(xmlMatch.trim());
out.println(n);

10-06 05:35