XMLノード名と属性で大文字/小文字/キャメルケースを無視するトリックを知っている人はいますか?
簡単な例: fooID という名前の XML 属性を含む XML ファイルをクライアントに渡しましたが、クライアントは XML を変更する可能性があり、大文字/小文字の変更や「fooid」の下の属性の追加を認識していません。当然、(AS3 の) 私のパーサーはすべて小文字の属性を無視します。ここでの問題は fooID に含まれる値ではなく、属性名そのものであることに注意してください。何か案は?
XMLノード名と属性で大文字/小文字/キャメルケースを無視するトリックを知っている人はいますか?
簡単な例: fooID という名前の XML 属性を含む XML ファイルをクライアントに渡しましたが、クライアントは XML を変更する可能性があり、大文字/小文字の変更や「fooid」の下の属性の追加を認識していません。当然、(AS3 の) 私のパーサーはすべて小文字の属性を無視します。ここでの問題は fooID に含まれる値ではなく、属性名そのものであることに注意してください。何か案は?
xml クエリで RegExp を使用し、大文字と小文字を区別しないようにする
const list:XMLList = xml.*.(@name.toString().search( new RegExp("hello", "i") )!= -1);
これは私にとってはうまくいくようです:
var lowerCasePropertyName:String = propertyName.toLowerCase();
var xmlItem:XMLList = xml.*.(attribute("name").toString().toLowerCase()==lowerCasePropertyName);
すべてのノードを再帰的にループし、選択したノード名を探してから、オブジェクト グラフを書き出すか、解析された XML を他の方法で保存する、独自の XML パーサーを作成することができます (古い、E4X 以前の方法)。 . これには、許可されたノード名 (疑似コード: if nodename == "fooID" then do something with the node
) に対して各ノード名をテストすることが含まれます。各ノードを比較しているため、ノード名と「fooID」の両方を小文字にすることでマッチングを正規化できます。
面倒ですが、うまくいきます。