我使用 jQuery 发布 ajax 请求,使用 PHP 构建 XML 响应。一切正常,但我想知道我用于数据输入的方法,以及是否有更标准的方法或更正确的方法。我的 XML 通常看起来像这样,其中一些属性表示文本,而其他属性表示数字数据:
<UnitConversions>
<UnitConversion basicUnitName="mile" conversionFactor="5280" conversionUnit="foot"/>
<UnitConversion basicUnitName="mile" conversionFactor="1760" conversionUnit="yard"/>
</UnitConversions>
我有很多不同的对象,不仅仅是这一种类型,所以在我的构造函数中,我没有显式地初始化每个属性,而是从 XML 节点复制属性:
var UnitConverter = function(inUnitConversionNode) {
var that = this;
$.each(inUnitConversionNode.attributes, function(i, attribute) {
that[attribute.name] = attribute.value;
});
};
当我检查数值时,我很早就遇到了麻烦,例如if(someValueFromTheXML === 1)
——这总是会评估为,false
因为来自 XML 的值是一个字符串,“1”。因此,我在 XML 的关键位置添加了节点,以告诉我的客户端代码将什么解释为数字以及将什么保留为文本:
<UnitConversions>
<NumericFields>
<NumericField fieldName="conversionFactor"/>
</NumericFields>
<UnitConversion basicUnitName="mile" conversionFactor="5280" conversionUnit="foot"/>
<UnitConversion basicUnitName="mile" conversionFactor="1760" conversionUnit="yard"/>
</UnitConversions>
所以现在我将 NumericFields 节点传递给构造函数,这样它就会知道将哪些字段存储为实际数字。
这一切都很好,但它似乎有点天真的解决方案,甚至可能是一个黑客。似乎那里会有更复杂的东西。这个问题似乎与 XML 模式有关,但我的谷歌搜索似乎表明模式更多的是关于验证,而不是打字,而且它们似乎无论如何都面向服务器端处理。
js知道XML中哪些字段是数字的标准/正确方法是什么?