2

そのため、TMX ファイルを簡単に編集できるようにするためのクイック ユーティリティに取り組んでいます。TMX は基本的に、多言語翻訳を格納するための XML ベースの標準です。とにかく、ファイル参照を介してTMXをAdobe AIRアプリにインポートしてから、ファイルストリームを取得し、UTF-8文字を文字列に平手打ちし、その文字列をXMLオブジェクトに変換しています。したがって:

var stream:FileStream = new FileStream();
stream.open(event.target /*file data*/ as File, FileMode.READ);
var fileData:String = stream.readUTFBytes(stream.bytesAvailable);
var tmxXml:XML = new XML(fileData);

しかし、ここが興味深い部分です。fileData次のようにロードされる場合:

<tuv xml:lang="en">
    <seg>About Us</seg>
</tuv>

Flex の XML は、次のように解釈します。

<tuv aaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace">
    <seg>
        About Us
    </seg>
</tuv>

おお、面白い!属性は にxml:langなりaaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace"ます。私の簡単な調査によると、これが起こる前例がいくつかありますが、それはやや厄介な仮定です。過度の文字列置換規則を作成せずに、これを回避する方法はありますか?

4

2 に答える 2

1

申し訳ありませんが、コメントできません (まだ?) ので、ここに記載します。

デフォルトの名前空間を持つ XML にデフォルト以外の名前空間を追加すると、複製できます。

var node:XML = <node xmlns="http://namespacehere.org"/>
var ns:Namespace = new Namespace("xml", "http://www.w3.org/XML/1998/namespace");
node.@ns::base = "myvalue";

出力は <node aaa:base="myvalue" xmlns="http://namespacehere.org" xmlns:aaa="http://www.w3.org/XML/1998/namespace"/>

追加use namespace nsしても効果がなく、デフォルトの名前空間は適用されません (接頭辞を付ける必要があります)。

この問題に何度か遭遇しましたが、原因を特定できませんでした。注: 名前空間に設定したプレフィックスまたは URI に関係なく、「aaa」プレフィックスが付きます。奇数。

于 2011-09-01T14:35:24.447 に答える
1

次のいずれかを使用してみましたか?

 default xml namespace = xml;

また、

 use namespace xml;

名前空間のドキュメントを参照してください。

于 2009-04-24T11:52:08.883 に答える