更新2:
我遵循Evan Trimboli的建议使用XMLSerializer并且它有效。 唯一的问题是:
var lines = (new XMLSerializer()).serializeToString(records[0].raw).split('\n');
行[0] ='噪音,20140425001730,6,6,COMMUNITY_NOISE,40.8'
因为数据的结束标记和第一行的开头之间没有'\ n'。
我可以简单地使用split('>')[1]来获取想要的部分,但这不是最好的做法。
所以我的问题是: 如何获取xml节点的内容?
(我想这可能很难,因为方法“serializeToString()”已经将结构化数据转换为字符串。)
更新
在多行代码后插入很多console.log()后,我终于找到了代码导致问题的地方。
正是这行代码
var lines = records[0].raw.innerHTML.split('\n');
导致问题,因为它的所有后续console.log()输出都没有打印出来。
所以我怀疑它是innerHTML在Windows Phone 8中不起作用,我也测试了代码,它在Android(HTC Sensation XE)中也不起作用。
所以我的问题是:为了获取记录[0] .raw。
的内容,innerHTML的替代方法是什么?非常感谢。
我正在使用Sencha Touch并尝试从远程服务器获取数据
这是我的商店
Ext.define('webTrak.store.NoiseStore', {
extend: 'Ext.data.Store',
requires: ['webTrak.model.noiseChunk', 'Ext.data.reader.Xml'],
config:{
autoLoad: true,
storeId: 'NoiseStore',
model: 'webTrak.model.noiseChunk',
proxy: {
type: 'ajax',
//url: "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fwebtrak.bksv.com%2Fmel%2Fdata%2F46610526'&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=",
url: 'http://webtrak.bksv.com/mel/data/46611635',
//url:'app/store/now.xml',
reader: {
type: 'xml',
//rootProperty: 'results',
record: 'data'
}
}
}
});
和我的控制器
noiseStore.load({
callback: function (records, operation, success) {
myop = records;
if (!success) {
Ext.Msg.alert('Failed!', records[0]);
}
else
{
Ext.Msg.alert('Success!', $(records[0].raw).html());
}
//var lines = $(records[0].raw).html().split('\n');
var lines = records[0].raw.innerHTML.split('\n');
Ext.Msg.alert('number of lines', lines);
Ext.Object.each(lines, function (key, value, myself) {
//window.setInterval(function () { }, 1000);
Ext.Function.defer(function () {
var fields = value.split(',');
var isNoise = fields[0];
if (isNoise === 'noise') {
console.log('noise = ' + fields[5]);
Ext.Msg.alert('noise', fields[5]);
var locid = fields[3];
var noisevalue = fields[5];
var overlayTmp = new Ext.Template('<div class="overlay">{noiseValue}</div>', { compiled: true });
overlayTmp.compile();
var overlayHtml = overlayTmp.apply({ noiseValue: noisevalue });
var tempOverLay = sensorSet[locid];
tempOverLay.onRemove();
sensorSet[locid].setValues({
content: overlayHtml
});
sensorSet[locid].onAdd();
sensorSet[locid].draw();
}
else {
console.log('radar = ' + fields[10]);
}
}, 2000);
//window.setInterval(function () {
//}, 1000);
});
}
});
这是数据来源:http://webtrak.bksv.com/mel/data/46611635
请帮助它在移动设备上运行~~~谢谢