我正在try 用php从关联数组创建XML.为了构建我的XML,我使用了SimpleXMLElement
我需要包含这个 struct 的文件:
<pt:request xmlns:pt="urn:logalty:schemas:core:1.0" xmlns:identity="urn:logalty:schemas:core:identity:1.0" xmlns:process_meta="urn:logalty:schemas:process:meta:1.0" xmlns:ptforms="urn:logalty:schemas:forms:1.0" xmlns:request_meta="urn:logalty:schemas:request:meta:1.0">
<pt:request_meta>
<request_meta:service>PT0005_ACCEPTANCEXPRESS</request_meta:service>
<request_meta:time2close unit="d" value="28"/>
<request_meta:time2save unit="d" value="1825"/>
<request_meta:lopd>0</request_meta:lopd>
<request_meta:retryprotocol>3</request_meta:retryprotocol>
<request_meta:synchronous>false</request_meta:synchronous>
<request_meta:tsa>0</request_meta:tsa>
<request_meta:userdefined name="LGT_SDKJava">4.13.2</request_meta:userdefined>
</pt:request_meta>
</pt:request>
在我的SimpleXMLElement实例中,我正在执行以下操作:
new \SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" standalone="yes"?><pt:request xmlns:pt="urn:logalty:schemas:core:1.0" xmlns:identity="urn:logalty:schemas:core:identity:1.0" xmlns:process_meta="urn:logalty:schemas:process:meta:1.0" xmlns:ptforms="urn:logalty:schemas:forms:1.0" xmlns:request_meta="urn:logalty:schemas:request:meta:1.0"><pt:request_meta></pt:request_meta></pt:request>');
我的XML创建的还可以,但是当我用notepad++ 显示它并完成XML
的时候,我可以看到我的标签it‘S格式错误:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pt:request xmlns:pt="urn:logalty:schemas:core:1.0" xmlns:identity="urn:logalty:schemas:core:identity:1.0" xmlns:process_meta="urn:logalty:schemas:process:meta:1.0" xmlns:ptforms="urn:logalty:schemas:forms:1.0" xmlns:request_meta="urn:logalty:schemas:request:meta:1.0">
<pt:request_meta/>
<pt:service>instalacion_id_1</pt:service>
<pt:0>request_meta:time2close unit="d" value="28"</pt:0>
<pt:1>request_meta:time2save unit="d" value="1825"</pt:1>
<pt:lopd>0</pt:lopd>
<pt:retryprotocol>3</pt:retryprotocol>
<pt:synchronous/>
<pt:tsa>0</pt:tsa>
<pt:userdefined name="php">8.1.6</pt:userdefined>
</pt:request>
有人能帮我用正确的 struct 创建我的XMl
吗?我不知道如何使用这些信息来做我的标签,例如:
<request_meta:time2close unit="d" value="28"/>
我的数组数据是吧?S:
$logalty_data = [
'request_meta:service' => 'instalacion_id_'.$id,
'request_meta:time2close unit="d" value="28"',
'request_meta:time2save unit="d" value="1825"',
'request_meta:lopd' => 0,
'request_meta:retryprotocol' => 3,
'request_meta:synchronous' => false,
'request_meta:tsa' => 0,
'request_meta:userdefined name="php"' => '8.1.6'
];
最新情况:
我已经解决了我的标签问题:<request_meta:time2close unit="d" value="28"/>
我在索引中添加了我的数组:=> ""
,用这种方法创建一个空标记并结束它:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pt:request xmlns:pt="urn:logalty:schemas:core:1.0" xmlns:identity="urn:logalty:schemas:core:identity:1.0" xmlns:process_meta="urn:logalty:schemas:process:meta:1.0" xmlns:ptforms="urn:logalty:schemas:forms:1.0" xmlns:request_meta="urn:logalty:schemas:request:meta:1.0">
<pt:request_meta/>
<pt:service>instalacion_id_1</pt:service>
<pt:time2close unit="d" value="28"/>
<pt:time2save unit="d" value="1825"/>
<pt:lopd>0</pt:lopd>
<pt:retryprotocol>3</pt:retryprotocol>
<pt:synchronous/>
<pt:tsa>0</pt:tsa>
<pt:userdefined name="php">8.1.6</pt:userdefined>
</pt:request>
但我仍然有问题的标签<pt:request_meta/>
只有一个关闭标签,而不是开放标签
针对用户@mrázek-honza My XML结果:
<pt:request_meta>
<pt:service>instalacion_id_1</pt:service>
<pt:time2close unit="d" value="28"/>
<pt:time2save unit="d" value="1825"/>
<pt:lopd>0</pt:lopd>
<pt:retryprotocol>3</pt:retryprotocol>
<pt:synchronous/>
<pt:tsa>0</pt:tsa>
<pt:userdefined name="php">8.1.6</pt:userdefined>
</pt:request_meta>
我输了<?xml version="1.0" encoding="UTF-8" standalone="yes"?><pt:request xmlns:pt="urn:logalty:schemas:core:1.0" xmlns:identity="urn:logalty:schemas:core:identity:1.0" xmlns:process_meta="urn:logalty:schemas:process:meta:1.0" xmlns:ptforms="urn:logalty:schemas:forms:1.0" xmlns:request_meta="urn:logalty:schemas:request:meta:1.0"></pt:request>