下面是来自TMX文件的TU(翻译单元)示例:
<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();
}
}
我现在尝试读取每个tuv
的xml:lang
属性。我想我可以用访问父tu
属性的方式来完成这一点,例如。$TU['creationdate']
。但是同样的方法不起作用。
我试过:
var_dump($TU->tuv[0]['xml:lang']) /* result: null */
var_dump($TU->tuv['xml:lang']); /* result: null */
var_dump($TU->tuv[0]['attributes']['xml:lang']); /* result: Warning: Trying to access array offset on value of type null... */
var_dump($TU->tuv[0]['@attributes']['xml:lang']); /* result: Warning: Trying to access array offset on value of type null... */
还有一些完全打破剧本的我还尝试在不使用“xml:“部分的情况下访问此属性-效果相同。
我希望你能给我指出正确的方向。
1条答案
按热度按时间wqnecbli1#
要读取属于名称空间的属性,通常需要使用
attributes()
方法并指定名称空间URI。由于xml:
是XML中预定义的名称空间,因此其URI为http://www.w3.org/XML/1998/namespace
:但是你可以将
('xml', true)
作为参数传递:所以工作代码应该是这样的(顺便说一句:我不知道你在阅读节点值时称
->asXml()
为什么,所以我删除了它):将产生: