簡體   English   中英

XML PHP 格式設置

[英]XML PHP Format Setup

有為什么要這樣做嗎? 我是創建 DomDocument 的新手。 謝謝

<:DOCTYPE Data SYSTEM "http.//data.data.org/schemas/data/1.234.1/data:dtd"> <Data payloadID = "123123123131231232323" timestamp = "2015-06-10T12:59:09-07:00">

$aribaXML = new DOMImplementation;
    $dtd = $aribaXML->createDocumentType('cXML', '', 'http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd');
    $dom = $aribaXML->createDocument('', '', $dtd);
$xml = new DomDocument('1.0');
$xml->formatOutput = true;

$works = $xml->createElement("works");
$xml->appendChild($works);

$work = $xml->createElement("work");
$work->setAttribute("id",1);
$works->appendChild($work);

$xml->save("storage/document.xml") or die("Error, Unable to create XML File");

這里有兩種方法在 DOM 中創建 PHP 中的新文檔。 如果不需要 DTD,可以直接創建DOMDocument class 的實例。

$document = new DOMDocument('1.0', "UTF-8");
$document->appendChild(
  $cXML = $document->createElement('cXML')
);
echo $document->saveXML();

Output:

<?xml version="1.0" encoding="UTF-8"?>
<cXML/>

對於帶有 DTD 的文檔,您的方法是正確的。

$implementation = new DOMImplementation;
$dtd = $implementation->createDocumentType(
    'cXML', '', 'http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd'
);
$document = $implementation->createDocument("", "cXML", $dtd);
$document->encoding = 'UTF-8';
$cXML = $document->documentElement;
echo $document->saveXML();

Output:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">

在初始引導之后,您使用$document的方法來創建節點和 append 它們。

// set an attribute on the document element
$cXML->setAttribute('version', '1.1.007');
// xml:lang is a namespaced attribute in a reserved namespace
$cXML->setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:lang', 'en-US');

// nested elements
// create a node, store it for the next call and append it
$cXML->appendChild(
  $header = $document->createElement('Header')
);
$header->appendChild(
  $from = $document->createElement('From')
);
$from->appendChild(
  $credential = $document->createElement('Credential')
);

// "Identity" has only a text node so we don't need to store it for later
$credential->appendChild(
  $document->createElement('Identity')
)->textContent = '83528721';

// format serialized XML string
$document->formatOutput = TRUE;
echo $document->saveXML();

Output:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">
<cXML version="1.1.007" xml:lang="en-US">
  <Header>
    <From>
      <Credential>
        <Identity>83528721</Identity>
      </Credential>
    </From>
  </Header>
</cXML>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM