use*_*201 4 php xml simplexml xml-namespaces
尝试编辑使用Excels XML-Namespaces的XML文档:
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
Run Code Online (Sandbox Code Playgroud)
我需要得到这个结果(需要ss:前缀befire 类型):
<Cell ...><Data ss:Type="String">value</Data></Cell>
Run Code Online (Sandbox Code Playgroud)
我已经查看了无法使用PHP SimpleXML添加命名空间的问题,但这种方法在这里没有帮助.换句话说,按照那里的说明运行它
$data = $cells[$i]->addChild('Data','value');
$data->addAttribute("ss:Type","String","urn:schemas-microsoft-com:office:spreadsheet");
Run Code Online (Sandbox Code Playgroud)
给我
<Cell ...><Data Type="String">value</Data></Cell>
Run Code Online (Sandbox Code Playgroud)
没有ss:前缀.如果我删除urn:前缀,那么我得到了这个
<Cell ...><Data xmlns:ss="schemas-microsoft-com:office:spreadsheet" ss:Type="String">value</Data></Cell>
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,当我用Excel打开文档时,数据都是不可见的.随着瓮:在SS:缺失和不瓮:定义成为部分 在Excel中无效的元素.
use*_*201 11
如果要添加具有特定名称空间前缀的属性,而不是将名称空间添加到文档中,则不仅要在name参数中指定前缀,还要xmlns在我的示例中再次使用前缀:xmlns:ss:Type.然后,名称空间URI(第三个参数)也将被忽略,因此它也不是必需的:
$data->addAttribute("xmlns:ss:Type", "String");
Run Code Online (Sandbox Code Playgroud)
注意xmlns:在ss:Type前面.然后根据需要输出:
<Cell><Data ss:Type="String">value</Data></Cell>
Run Code Online (Sandbox Code Playgroud)