我想在String中创建XML。当我通过网络服务器调用它时,它获得相同的字符串时间。从服务器调用它自己,它工作正常。我从同一个方法中获得了两个不同的字符串。
这是构建xml的方法: StringBuilder builder = new StringBuilder();
var onChange = document.querySelectorAll('.input');
var onChangeSelect = document.querySelectorAll('.select');
for (var i=0; i < onChange.length; i++){
onChange[i].addEventListener("input", function (event) {
// event.target.id
myFunction();
});
}
我明白了:
builder.append("<regions>");
for (Region region : world.getRegions()) {
builder.append("<region><name>" + region.getName() + "</name>");
double numCult = 0.0;
double numAtheists = 0.0;
double population = region.getPopulation();
if(region.getHumansByReligion(cult) != null) {
numCult = (double) region.getHumansByReligion(cult).size();
numCult = (100.0 * (numCult / population));
}
if(region.getHumansByReligion(atheism) != null) {
numAtheists = (double) region.getHumansByReligion(atheism).size();
numAtheists = 100.0 * (numAtheists / population);
}
double numInfidel = 100.0 - (numAtheists + numCult);
if(numCult > numAtheists) {
if(numCult > numInfidel) {
builder.append("<cult>cult</cult><value>" + (int)numCult + "</value>");
} else {
builder.append("<cult>infidel</cult><value>" + (int)numInfidel + "</value>");
}
} else if(numAtheists > numInfidel) {
builder.append("<cult>atheism</cult><value>" + (int)numAtheists + "</value>");
} else {
builder.append("<cult>infidel</cult><value>" + (int)numInfidel + "</value>");
}
builder.append("</region>");
}
builder.append("</regions>");
return builder.toString();
Webserver方法:
<regions><region><name>North America</name><cult>cult</cult><value>109</value></region><region><name>South America</name><cult>cult</cult><value>105</value></region><region><name>Africa</name><cult>atheism</cult><value>108</value></region><region><name>Europe</name><cult>atheism</cult><value>105</value></region><region><name>Oceania</name><cult>infidel</cult><value>100</value></region><region><name>Asia</name><cult>atheism</cult><value>113</value></region></regions>
这是通过webservice调用的输出:
@Path("/getStats")
@GET
@Produces(MediaType.TEXT_XML)
public String getStats() {
String xml = game.getGameStats();
System.out.println("XML"+xml);
return "<?xml version='1.0' encoding='UTF-8'?>" + xml ;
}
答案 0 :(得分:0)
基于你的评论看起来他每次打电话给webserivce 我都会用一个可能的场景回答一个新游戏。
假设我们有Game
类(具有游戏逻辑),我们将把它注入我们的名为WebService
的Web服务中。可能的解决方案可能是:
@Named
public class Game implements Serializable {
public String getGameStats() {
....
}
}
@Path("/")
public class WebService {
// inject the game logic as a dependency
@Inject
private Game myGame
@Path("/getStats")
@GET
@Produces(MediaType.TEXT_XML)
public String getStats() {
String xml = myGame.getGameStats();
return "<?xml version='1.0' encoding='UTF-8'?>" + xml ;
}
....
}
现在,如果我们想在整个应用中只有Game
的一个实例,请添加@Singleton
注释。
提示:不要忘记添加implements Serializable
答案 1 :(得分:0)
我只是在自己的类中创建了一个静态方法来阻止它覆盖......
public class GameManager {
private static Game game = null;
private static Player player = null;
public static void startGame() {
player = new Player(0, "Demo", "Player", "demo.player@test.com", "DemoPlayer", "1234");
game = new Game(player,"Demo");
game.start();
}
public static String getGameStats() {
return game.getGameStats();
}
}