我正在使用基于Java World Wind的应用程序,该应用程序使用HTML。我有一个包含所有感兴趣的地方的数据库,其中包含name,text_description,icon_link等属性...我的目的是每次点击地球上不同的感兴趣的地方时,用另一个替换HTML的一些文本字符串。所以我需要的是解析HTML文档,搜索关键字并用我数据库中的相应字符串替换它。我写了一个类,负责搜索关键字并用适当的字符串替换它:
public class MyNodeVisitor extends NodeVisitor {
String name;
String text;
String icon;
public MyNodeVisitor() {
}
public MyNodeVisitor(String Name, String Text, String IconPath){
this.name = Name;
this.text = Text;
this.icon = IconPath;
}
public void visitStringNode (Text string)
{
if (string.getText().equals("DataName")) {
string.setText(name);
}
else if (string.getText().equals("DataText")){
string.setText(text);
}
else if(string.getText().equals("DataIcon")){
string.setText(icon);
}
}
}
因此,在我的HTML中,我定义了文本字符串DataName,DataText和DataIcon,我希望将其替换为从数据库调用的文本字符串。
上面提到的类在我的代码中以下列方式使用:
NodeList nl = new NodeList();
String htmlString = null;
InputStream contentStream = null;
contentStream = WWIO.openFileOrResourceStream(BROWSER_BALLOON, this.getClass());
htmlString = WWIO.readStreamToString(contentStream, null);
try {
Parser parser = new Parser(htmlString);
nl = parser.parse(null);
nl.visitAllNodesWith(new MyNodeVisitor(resultStr2,textString,resultStr3));
nl.toString();
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String output = nl.toHtml();
return output;
其中resultStr2,textString和resultStr3是应该替换HTML中的键字符串“DataName”,“DataText”和“DataIcon”的字符串。
问题在于,替换适用于前两个字符串DataName和DataText(这意味着,每当我调用数据库的不同元素时,我的名称和文本都适用于具体元素),它不会为DataIcon工作。调试说,它只是无法搜索DataIcon String,即使我已经在我的HTMl中定义了它,就像那样:
<div class="tabbertab">
<h2>Pictures</h2>
<div id="album">
<ul class="gallery">
<li><a href="#nogo" tabindex="1">1<img src="DataIcon" alt="landscape image 1" title="landscape image 1" /></a></li>
<li><a href="#nogo" tabindex="1">2<img src="C:\thesis\100GreatP\eclipse_ws\test\data\pictures\1\pyramid2.jpg" alt="landscape image 2" title="landscape image 2" /></a></li>
</ul>
</div>
</div>
我不知道它有什么问题,我感谢各种帮助。谢谢!