Ниже узел Я пытаюсь создать в моей XML -Добавить атрибут пространства имен XML узла в PHP
<?xml version="1.0" standalone="no" ?>
<manifest identifier="com.scorm.golfsamples.contentpackaging.multioscosinglefile.20043rd"
version="1"
xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_v1p3"
xmlns:adlseq="http://www.adlnet.org/xsd/adlseq_v1p3"
xmlns:adlnav="http://www.adlnet.org/xsd/adlnav_v1p3"
xmlns:imsss="http://www.imsglobal.org/xsd/imsss"
xsi:schemaLocation="http://www.imsglobal.org/xsd/imscp_v1p1 imscp_v1p1.xsd
http://www.adlnet.org/xsd/adlcp_v1p3 adlcp_v1p3.xsd
http://www.adlnet.org/xsd/adlseq_v1p3 adlseq_v1p3.xsd
http://www.adlnet.org/xsd/adlnav_v1p3 adlnav_v1p3.xsd
http://www.imsglobal.org/xsd/imsss imsss_v1p0.xsd">
код работает отлично для identifier
и version
атрибута, но не в состоянии создать его с пространством имен, как xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
Попробовал этот код из here, но не в состоянии сделать это :(
$doc = new DOMDocument('1.0');
$doc->loadXML($source);
// (1) We just create a "namespace'd" attribute without appending it to any element.
$attr_ns = $doc->createAttributeNS('{namespace_uri_here}', 'example:attr');
print $doc->saveXML() . "\n";
Codepad Link - http://codepad.org/uLJc4hpP
Полный код -
//creating an XML document
$dom = new DOMDocument('1.0');
$dom->xmlStandalone = false;
//create element manifest
$manfiestNode = $dom->createElement('manifest',"");
//create attribute identifier
$manfiestNodeAttr = $dom->createAttribute('identifier');
//value for the manifest node identifier value
$date = new DateTime();
$manfiestNodeAttr->value = 'course_'.date_format($date,'U');
//append attribute to the manifest element
$manfiestNode->appendChild($manfiestNodeAttr);
//create attribute with an associated namespace
$nodeAttr = $manfiestNode->createAttributeNS('{namespace_uri_here}', 'example:attr');
//append namespace to the manifest element
$nodeAttr->appendChild($manfiestNode);
//append manifest element to the document
$dom->appendChild($manfiestNode);
var_dump($dom->saveXML());
Позвольте мне знать, что я концептуально делаю неправильно и как я мог бы сделать его работу.
Я пытался путем изменения $manfiestNode
к $dom
в строке 20 [codepad ссылка], но до сих пор не повезло :(.
error-
Fatal error: Call to undefined method DOMElement::createAttributeNS() on line 20
Мой вопрос об генерации 'xmlns: xsi' этих типов атрибутов, версии и идентификатора успешно создан из кода выше – swapnesh
@swapnesh Но вы можете создать' xmlns' с 'createAttribute'? – Bora
Да, я пробовал этот путь '$ dom-> createAttribute ('xmlns: xsi')', и он работает :) только вещь - это действительно чистый способ генерации, как это ... я знаю, если у вас есть мысли об этом +1 :) – swapnesh