You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP读取TMX文件中tuv标签的xml:lang属性

读取TMX文件中tuv标签的xml:lang属性问题

问题描述

处理TMX翻译文件时,使用PHP的SimpleXML可以正常读取<tu>标签的属性(如creationdate),但尝试读取<tuv>标签的xml:lang属性时,多种方法均返回null或报错。

TMX翻译单元示例

<tu creationdate="20080812T111221Z" creationid="Cheeseus" changedate="20190825T065920Z" changeid="Cheeseus" usagecount="0" tuid="2">
    <tuv xml:lang="BG">
      <seg>ПАРТНЬОРИ</seg>
    </tuv>
    <tuv xml:lang="EN-GB">
      <seg>PARTNERS</seg>
    </tuv>
</tu>

当前读取代码

$xmlStr = file_get_contents($uploadedFile);
$xmlObj = simplexml_load_string($xmlStr);
$TUs = $xmlObj->body->tu;

foreach($TUs as $TU) {
    if(isset($TU->tuv[0]->seg)) {
        $sourceText = $TU->tuv[0]->seg->asXML();
        $targetText = $TU->tuv[1]->seg->asXML();
    }
}

尝试过的无效方法

var_dump($TU->tuv[0]['xml:lang']); // 结果:null
var_dump($TU->tuv['xml:lang']); // 结果:null
var_dump($TU->tuv[0]['attributes']['xml:lang']); // 结果:Warning: Trying to access array offset on value of type null...
var_dump($TU->tuv[0]['@attributes']['xml:lang']); // 结果:Warning: Trying to access array offset on value of type null...

解决方案

xml:lang属于XML内置命名空间的属性(命名空间URI为http://www.w3.org/XML/1998/namespace),不能像普通属性直接通过数组下标访问,必须通过attributes()方法指定命名空间来获取。

修改后的代码示例:

$xmlStr = file_get_contents($uploadedFile);
$xmlObj = simplexml_load_string($xmlStr);
$TUs = $xmlObj->body->tu;

// 定义XML命名空间URI
$xmlNamespace = 'http://www.w3.org/XML/1998/namespace';

foreach($TUs as $TU) {
    if(isset($TU->tuv[0]->seg)) {
        // 获取tuv标签的xml:lang属性
        $sourceLang = (string)$TU->tuv[0]->attributes($xmlNamespace)->lang;
        $targetLang = (string)$TU->tuv[1]->attributes($xmlNamespace)->lang;
        
        $sourceText = $TU->tuv[0]->seg->asXML();
        $targetText = $TU->tuv[1]->seg->asXML();
        
        // 验证输出
        var_dump($sourceLang, $targetLang);
    }
}

说明

  • 调用attributes($xmlNamespace)会返回指定命名空间下的所有属性对象,直接访问->lang即可获取xml:lang的值
  • 加上(string)强制类型转换,确保得到的是字符串而非SimpleXMLElement对象

内容的提问来源于stack exchange,提问作者cheeseus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:34:59