[英]How to PHP DOMDocument creating attributes?
两天来,我一直在用头撞墙,试图弄清楚如何让 PHP对我想要的 XML 进行编码。 我尝试了 SimpleXML 并发现存在严重的限制,所以现在我使用 DOMDocument 来满足我的需求。 我的问题很基本,正确的语法是什么?
我正在从数据库中检索代码,然后将其呈现为 xml。 XML 结构必须与我要发布的格式完全相同。 问题是当涉及到属性时。 输出具有三个属性,需要使用不同的值重复 12 次。 我的问题是试图弄清楚如何呈现属性,需要什么代码。
这是 XML:
<inits>
<version>18.05.04_EP1</version>
<source>Live</source>
<lowid>265067</lowid>
<highid>265068</highid>
<ql>300</ql>
<name>Ofab Shark Mk 1</name>
<inits slider="DEF>===========][<AGG" percent="100" init="430" />
<inits slider="DEF>==========][=<AGG" percent="90" init="530" />
<inits slider="DEF>=========][==<AGG" percent="81" init="630" />
<inits slider="DEF>========][===<AGG" percent="72" init="730" />
<inits slider="DEF>=======][====<AGG" percent="63" init="830" />
<inits slider="DEF>======][=====<AGG" percent="54" init="930" />
<inits slider="DEF>=====][======<AGG" percent="45" init="1030" />
<inits slider="DEF>====][=======<AGG" percent="36" init="1130" />
<inits slider="DEF>===][========<AGG" percent="27" init="1290" />
<inits slider="DEF>==][=========<AGG" percent="18" init="1590" />
<inits slider="DEF>=][==========<AGG" percent="9" init="1890" />
<inits slider="DEF>][===========<AGG" percent="0" init="2190" />
</inits>
请注意,Inits 包含属性、百分比和初始化。 在本例中将显示 12 次,这是从数据和 php 计算得出的。 这是我目前使用的代码。 注意:我跳过数据和计算功能并手动填写数据。
$root = $doc->createElement('inits');
$root = $doc->appendChild($root);
$version = $doc->createElement('version');
$version = $root->appendChild($version);
$versiontext = $doc->createTextNode($patchNum);
$versiontext = $version->appendChild($versiontext);
$source = $doc->createElement('source');
$source = $root->appendChild($source);
$sourcetext = $doc->createTextNode('live');
$sourcetext = $source->appendChild($sourcetext);
$xlowid = $doc->createElement('lowid');
$xlowid = $root->appendChild($xlowid);
$xlowidtext = $doc->createTextNode($lowid);
$xlowidtext = $xlowid->appendChild($xlowidtext);
$xhighid = $doc->createElement('highid');
$xhighid = $root->appendChild($xhighid);
$xhighidtext = $doc->createTextNode($highid);
$xhighidtext = $xhighid->appendChild($xhighidtext);
$xql = $doc->createElement('ql');
$xql = $root->appendChild($xql);
$xqltext = $doc->createTextNode($ql);
$xqltext = $xql->appendChild($xqltext);
我从哪里开始让 3 个属性起作用,就像上面的 XML 示例一样。 谢谢。
要设置属性,请使用$some_node->setAttribute("name","value")
。 根据需要对所有属性重复。
另请注意,您可以链接函数调用:
$root = $doc->appendChild($doc->createElement('inits'));
$root->appendChild($doc->createElement('version',$patchNum));
$root->appendChild($doc->createElement('source',$sourcetext));
$root->appendChild($doc->createElement('lowid',$lowid));
$root->appendChild($doc->createElement('highid',$highid));
$root->appendChild($doc->createElement('ql',$ql));
for($i=11;$i>=0;$i--) {
$node = $root->appendChild($doc->createElement('inits'));
$node->setAttribute("slider","DEF>".str_repeat("=",$i)."][".str_repeat("=",11-$i)."<AGG");
$node->setAttribute("percent",floor($i/11*100));
$node->setAttribute("init",$i>3 ? 430+(11-$i)*100 : 1290+(3-$i)*300);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.