0

jQuery を使用して ajax リクエストを投稿し、PHP を使用して XML レスポンスを作成しています。すべてが正常に機能しますが、データ型付けに使用した方法と、より標準的な方法またはより正しい方法があるかどうかについて疑問に思います。私の XML は一般的に次のようになります。一部の属性はテキストを表し、その他の属性は数値データを表します。

<UnitConversions>
    <UnitConversion basicUnitName="mile" conversionFactor="5280" conversionUnit="foot"/>
    <UnitConversion basicUnitName="mile" conversionFactor="1760" conversionUnit="yard"/>
</UnitConversions>

この 1 つのタイプだけでなく、さまざまなオブジェクトが多数あるため、コンストラクターでは、すべてのプロパティを明示的に初期化するのではなく、XML ノードから属性をコピーするだけです。

var UnitConverter = function(inUnitConversionNode) {
    var that = this;
    $.each(inUnitConversionNode.attributes, function(i, attribute) {
        that[attribute.name] = attribute.value;
    });
};

XML からの値が文字列「1」であるため、これif(someValueFromTheXML === 1)は常に に評価されます。falseそこで、XML の主要な場所にノードを追加して、クライアント側のコードに何を数値として解釈し、何をテキストとして残すかを指示しました。

<UnitConversions>
    <NumericFields>
        <NumericField fieldName="conversionFactor"/>
    </NumericFields>
    <UnitConversion basicUnitName="mile" conversionFactor="5280" conversionUnit="foot"/>
    <UnitConversion basicUnitName="mile" conversionFactor="1760" conversionUnit="yard"/>
</UnitConversions>

そこで、NumericFields ノードをコンストラクターに渡し、どのフィールドを実際の数値として格納するかを認識できるようにします。

これはすべてうまく機能しますが、少し素朴な解決策のように思えます。ハックかもしれません。そこにはもっと洗練されたものがあるようです。この問題は XML スキーマに関連しているようですが、私のグーグル検索によると、スキーマは入力ではなく検証に関するものであり、とにかくサーバー側の処理を対象としているようです。

XMLのどのフィールドが数値であるかをjsが知るための標準/正しい方法は何ですか?

4

1 に答える 1