swa*_*esh 2 php xml domdocument xml-parsing
以下是我尝试在XML中创建的节点 -
<?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">
Run Code Online (Sandbox Code Playgroud)
代码工作正常identifier,version属性但无法使用命名空间生成它xmlns="http://www.imsglobal.org/xsd/imscp_v1p1"
从这里尝试了这个代码,但无法做到:(
$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";
Run Code Online (Sandbox Code Playgroud)
键盘链接 - 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());
Run Code Online (Sandbox Code Playgroud)
让我知道我在概念上做错了什么,我怎么能让它发挥作用.
我尝试$manfiestNode改为$dom第20行[codepad link]但仍然没有运气:(.
错误-
致命错误:在第20行调用未定义的方法DOMElement :: createAttributeNS()
尝试使用createAttribute以下内容
$dom = new DOMDocument('1.0','UTF-8');
// root manifest
$root = $dom->appendChild($dom->createElement('manifest'));
// identifier
$date = new DateTime();
$manfiestNodeAttr_value = 'course_'.date_format($date,'U');
$root->appendChild($dom->createAttribute('identifier'))->appendChild($dom->createTextNode($manfiestNodeAttr_value));
// version
$version = 1;
$root->appendChild($dom->createAttribute('version'))->appendChild($dom->createTextNode($version));
// xmlns:xsi
$root->appendChild($dom->createAttribute('xmlns:xsi'))->appendChild($dom->createTextNode("http://www.w3.org/2001/XMLSchema-instance"));
print_r($dom->saveXML());
Run Code Online (Sandbox Code Playgroud)
演示键盘: http ://codepad.org/zgug0Gl3