特定の文字列xmlMatchのハッシュテーブルを検索するのに問題があります。これは、特定のdivタグの内容から派生しています
XMLを検索し、StringxmlMatchを定義するために使用するコードを含めました。私はこれが正しいと信じており、それを画面に印刷することによってそのように示しています。私はこれが単純であるべきだと知っています。クイックテストハッシュテーブルを作成しましたが、同じことがそこで機能します。
私のテストコード-動作します
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のコンソールに以下を出力します
true
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がFloridaであることを確認します
次に、単純なハッシュテーブルを実装します
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を出力します-フロリダに等しいxmlMatchがハッシュテーブルにあるのでtrueを出力するはずです。
String n = table.get(xmlMatch);
out.println(n);
そしてこれはnullを出力します-これは/PathToFile.txtを出力するはずだと思います
しかし、私がこれを単純に行うと
out.println(xmlMatch);
もう一度フロリダを画面に印刷します
私は何が間違っているのですか?ハッシュテーブルで特定の文字列を検索できるようにしたいだけです。いつものように、どんな助けでも大歓迎です。
編集: 大文字に問題がある可能性がありますか、またはxmlMatchが追加のスペース文字を渡している可能性がありますか?例:「フロリダ」
編集2 私のxmldivタグは単に読み取ります
<sliceXML>Florida</sliceXML>
回避 策の解決策これは問題の解決策ですが、私が尋ねた質問の解決策ではないため、ここに追加します。
Joe Kの助けを借りて、endTagを確認したところ、スラッシュを正しくエンコードできなかったことがわかりました。回答を回避するための作業をここに投稿しました