Flex 3 XML 实施中出现错误? 重写 xml:lang
因此,我正在开发一个快速实用程序,可以对 TMX 文件进行简单编辑。 TMX 基本上是一个基于 XML 的标准,用于存储多语言翻译。 不管怎样,我通过文件引用将 TMX 导入到 Adobe AIR 应用程序中,然后抓取文件流,将 UTF-8 字符放入字符串中,然后将该字符串放入 XML 对象中。 THus:
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"
。 根据我的简短研究,这种情况有一些发生的先例,但这有点糟糕的假设。 在不创建过多的字符串替换规则的情况下,有没有办法绕过这个问题?
So I'm working on a quick utility to allow simple editing for TMX files. TMX is basically an XML-based standard for storing multilingual translations. Anyhoo, I'm importing TMX into an Adobe AIR app via a File reference, then grabbing the file stream, slapping the UTF-8 characters into a string, and then that string into an XML object. THus:
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);
But, here is the interesting part. If fileData
is loaded as this:
<tuv xml:lang="en">
<seg>About Us</seg>
</tuv>
Flex's XML interprets it as this:
<tuv aaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace">
<seg>
About Us
</seg>
</tuv>
Oh ho interesting! The attribute xml:lang
becomes aaa:lang="en" xmlns:aaa="http://www.w3.org/XML/1998/namespace"
. From my brief research, there is some precedent for this happening, but it's somewhat a sucky assumption. Without creating excessive string replace rules, is there a way to circumvent this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过使用以下其中一种?
或者,
浏览命名空间文档。
Have you tried using one of the following?
or,
Go through the Namespaces documentation.
抱歉,还不能发表评论,所以我把它放在这里。
当使用默认命名空间将非默认命名空间添加到 XML 时,我可以进行复制:
输出为
<节点 aaa:base="myvalue" xmlns="http://namespacehere.org" xmlns:aaa="http://www.w3.org/XML/1998/namespace"/>
use namespace ns 没有任何效果,并且默认命名空间不适用(需要添加前缀)。
我曾多次遇到过这个问题,但未能找出原因。 注意:无论您在命名空间中设置什么前缀或 URI,最终仍会带有“aaa”前缀。 奇怪的。
Sorry, can't comment (yet?) so I'll put this here.
I can replicate when adding a non-default namespace to XML with a default namespace:
Output is
<node aaa:base="myvalue" xmlns="http://namespacehere.org" xmlns:aaa="http://www.w3.org/XML/1998/namespace"/>
Adding
use namespace ns
has no effect and a default namespace is not applicable (it needs to be prefixed).I have come accross this issue a few times, but have not been able to isolate the cause. Note: one still ends up with an "aaa" prefix no matter what prefix or URI you set in the namespace. Odd.