此软件包已被废弃且不再维护。作者建议使用 clacy-builders/xml 软件包代替。

Clacy Builders XML Express 是用于创建 XML 文档的库。

0.1 2016-04-08 15:44 UTC

This package is not auto-updated.

Last update: 2019-02-20 18:42:34 UTC


README

安装

XML Express for PHP 需要 PHP 5.4 或更高版本。

将以下内容添加到项目的 composer.json 文件中

{
    "minimum-stability": "dev",
    "require": {
        "clacy-builders/xml": "dev-master@dev"
    }
}

运行 composer installcomposer update

不使用 Composer

  1. 下载 ZIP 文件
  2. 在您的项目目录中创建目录 /vendor/clacy-builders/xml
  3. 从 ZIP 文件中的 xml-express-php-master 文件夹复制包含的文件到之前创建的 xml 文件夹中。

替换

require_once 'vendor/autoload.php';

require_once 'vendor/clacy-builders/xml/allIncl.php';

基本用法

<?php
require_once 'vendor/autoload.php';

use \ClacyBuilders\Xml;

class Kml extends Xml
{
    const MIME_TYPE = 'application/vnd.google-earth.kml+xml';
    const FILENAME_EXTENSION = 'kml';
    const XML_NAMESPACE = 'http://www.opengis.net/kml/2.2';

    public static function createKml()
    {
        return static::createRoot('kml');
    }

    public function placemark($name, $description, $longitude, $latitude, $altitude = 0)
    {
        $pm = $this->append('Placemark');
        $pm->append('name', $name);
        $pm->append('description', $description);
        $pm->append('Point')
                ->append('coordinates', $longitude . ',' . $latitude . ',' . $altitude);
        return $pm;
    }
}

$myKml = Kml::createKml();
$myKml->placemark('Cologne Cathedral',
        'Cologne Cathedral is a Roman Catholic cathedral in Cologne, Germany.',
        '50.9413', '6.958');
$myKml->headerfields('cologne-cathedral');
print $myKml;

生成的标记

<?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
    <Placemark>
        <name>Cologne Cathedral</name>
        <description>Cologne Cathedral is a Roman Catholic cathedral in Cologne, Germany.</description>
        <Point>
            <coordinates>50.9413,6.958,0</coordinates>
        </Point>
    </Placemark>
</kml>

Adhoc 特性

Adhoc 允许您使用任何之前未定义的方法名来添加 XML 元素或属性。

<?php
require_once 'vendor/autoload.php';

use \ClacyBuilders\Xml;
use \ClacyBuilders\Adhoc;

class Html extends Xml
{
    use Adhoc;

    const XML_DECLARATION = false;
    const DOCTYPE = '<!DOCTYPE html>';
    const HTML_MODE = true;

    public static function createHtml($lang = null, $manifest = null)
    {
        return static::createRoot('html')
                ->attrib('lang', $lang)
                ->setManifest($manifest);
    }
}

$html = Html::createHtml('en');
$body = $html->body();
$article = $body->article();
$article->h1('Scripting languages');
$article->p(Html::abbr('PHP')->setTitle('PHP: Hypertext Preprocessor') . ' is a
        server-side scripting language designed for web development but also used
        as a general-purpose programming language.');

print $html;

生成的标记

<!DOCTYPE html>
<html lang="en">
    <body>
        <article>
            <h1>Scripting languages</h1>
            <p><abbr title="PHP: Hypertext Preprocessor">PHP</abbr> is a
            server-side scripting language designed for web development but also used
            as a general-purpose programming language.</p>
        </article>
    </body>
</html>