UNPKG

manual-php

Version:
509 lines (395 loc) 14 kB
# SimpleXML * [SimpleXMLElement](#simplexmlelement) * [SimpleXMLElement::__construct - 创建一个新的 SimpleXMLElement 对象](#simplexmlelementconstruct) * [SimpleXMLElement::addAttribute - 给 SimpleXMLElement 对象添加属性](#simplexmlelementaddattribute) * [SimpleXMLElement::addChild - 将子元素添加到 XML 节点](#simplexmlelementaddchild) * [SimpleXMLElement::asXML - 返回基于 SimpleXMLElement 对象的格式正确的 XML 字符串](#simplexmlelementasxml) * [SimpleXMLElement::attributes - 标识元素的属性](#simplexmlelementattributes) * [SimpleXMLElement::children - 查找指定节点的子代](#simplexmlelementchildren) * [SimpleXMLElement::count - 统计元素的子代数量](#simplexmlelementcount) * [SimpleXMLElement::getDocNamespaces - 返回文档中声明的名称空间](#simplexmlelementgetdocnamespaces) * [SimpleXMLElement::getName - 获取 XML 元素的名称](#simplexmlelementgetname) * [SimpleXMLElement::getNamespaces - 返回文档中使用的名称空间](#simplexmlelementgetnamespaces) * [SimpleXMLElement::registerXPathNamespace - 为下一个 XPath 查询创建一个命名空间下文](#simplexmlelementregisterxpathnamespace) * [SimpleXMLElement::saveXML - 返回基于 SimpleXMLElement 对象的格式正确的 XML 字符串](#simplexmlelementsavexml) * [SimpleXMLElement::__toString - 返回字符串内容](#simplexmlelementtostring) * [SimpleXMLElement::xpath - 对 XML 数据进行 XPath 查询](#simplexmlelementxpath) * [SimpleXMLIterator](#simplexmliterator) * [SimpleXMLIterator::current - 返回当前元素](#simplexmliteratorcurrent) * [SimpleXMLIterator::getChildren - 返回当前元素的子元素](#simplexmliteratorgetchildren) * [SimpleXMLIterator::hasChildren - 检查当前元素是否具有子元素](#simplexmliteratorhaschildren) * [SimpleXMLIterator::key - 返回当前的元素名](#simplexmliteratorkey) * [SimpleXMLIterator::next - 移动至下一个元素](#simplexmliteratornext) * [SimpleXMLIterator::rewind - 倒回到第一个元素](#simplexmliteratorrewind) * [SimpleXMLIterator::valid - 检查当前元素是否有效](#simplexmliteratorvalid) * [SimpleXML](#simplexml) * [simplexml_import_dom - 从 DOM 节点获取 SimpleXMLElement 对象](#simplexmlimportdom) * [simplexml_load_file - 将 XML 文件解析为对象](#simplexmlloadfile) * [simplexml_load_string - 将 XML 字符串解析为对象](#simplexmlloadstring) ## SimpleXMLElement ### SimpleXMLElement::__construct ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body>Here is some text.</body> </document> XML; var_dump(new SimpleXMLElement($xml)); // object(SimpleXMLElement)#1 (2) { ["title"]=> string(3) "XML" ["body"]=> string(18) "Here is some text." } ``` ### SimpleXMLElement::addAttribute ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body>Here is some text.</body> </document> XML; $xml = new SimpleXMLElement($xml); $xml->addAttribute('foo', 'bar'); var_dump($xml); // object(SimpleXMLElement)#1 (3) { ["@attributes"]=> array(1) { ["foo"]=> string(3) "bar" } ["title"]=> string(3) "XML" ["body"]=> string(18) "Here is some text." } ``` ### SimpleXMLElement::addChild ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> </document> XML; $xml = new SimpleXMLElement($xml); var_dump($xml->addChild('body', 'Here is some text.')); // object(SimpleXMLElement)#2 (1) { [0]=> string(18) "Here is some text." } var_dump($xml); // object(SimpleXMLElement)#1 (2) { ["title"]=> string(3) "XML" ["body"]=> string(18) "Here is some text." } ``` ### SimpleXMLElement::asXML ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body>Here is some text.</body> </document> XML; $xml = new SimpleXMLElement($xml); echo $xml->asXML(); ``` ### SimpleXMLElement::attributes ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document foo="bar"> <title>XML</title> <body>Here is some text.</body> </document> XML; $xml = new SimpleXMLElement($xml); var_dump($xml->attributes()); // object(SimpleXMLElement)#2 (1) { ["@attributes"]=> array(1) { ["foo"]=> string(3) "bar" } } ``` ### SimpleXMLElement::children ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xml = new SimpleXMLElement($xml); var_dump($xml->children()); // object(SimpleXMLElement)#2 (2) { ["title"]=> string(3) "XML" ["body"]=> object(SimpleXMLElement)#4 (1) { ["p"]=> string(18) "Here is some text." } } var_dump($xml->children()->body->children()); // object(SimpleXMLElement)#4 (1) { ["p"]=> string(18) "Here is some text." } ``` ### SimpleXMLElement::count ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xml = new SimpleXMLElement($xml); var_dump($xml->count()); // int(2) ``` ### SimpleXMLElement::getDocNamespaces ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document xmlns:title="http://www.example.com/title" xmlns:body="http://www.example.com/body" xmlns:p="http://www.example.com/p"> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xml = new SimpleXMLElement($xml); var_dump($xml->getDocNamespaces()); // array(3) { ["title"]=> string(28) "http://www.example.com/title" ["body"]=> string(27) "http://www.example.com/body" ["p"]=> string(24) "http://www.example.com/p" } ``` ### SimpleXMLElement::getName ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xml = new SimpleXMLElement($xml); foreach ($xml->children() as $children) { var_dump($children->getName()); } // string(5) "title" // string(4) "body" ``` ### SimpleXMLElement::getNamespaces ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document xmlns:title="http://www.example.com/title" xmlns:body="http://www.example.com/body" xmlns:p="http://www.example.com/p"> <title:title>XML</title:title> <body:body> <p>Here is some text.</p> </body:body> </document> XML; $xml = new SimpleXMLElement($xml); var_dump($xml->getNamespaces(true)); // array(2) { ["title"]=> string(28) "http://www.example.com/title" ["body"]=> string(27) "http://www.example.com/body" } ``` ### SimpleXMLElement::registerXPathNamespace ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document xmlns:title="http://www.example.com/title"> <title:title>XML</title:title> <body> <p>Here is some text.</p> </body> </document> XML; $xml = new SimpleXMLElement($xml); $xml->registerXPathNamespace('title', 'http://www.example.com/title'); var_dump($xml->xpath('//title:title')); // array(1) { [0]=> object(SimpleXMLElement)#2 (1) { [0]=> string(3) "XML" } } ``` ### SimpleXMLElement::saveXML ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body>Here is some text.</body> </document> XML; $xml = new SimpleXMLElement($xml); echo $xml->saveXML(); ``` ### SimpleXMLElement::__toString ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xml = new SimpleXMLElement($xml); echo $xml; print $xml; ``` ### SimpleXMLElement::xpath ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xml = new SimpleXMLElement($xml); var_dump($xml->xpath('/document/body')); // array(1) { [0]=> object(SimpleXMLElement)#2 (1) { ["p"]=> string(18) "Here is some text." } } ``` ## SimpleXMLIterator ### SimpleXMLIterator::current ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xmlIterator = new SimpleXMLIterator($xml); var_dump($xmlIterator->current()); // NULL $xmlIterator->rewind(); var_dump($xmlIterator->current()); // object(SimpleXMLIterator)#2 (1) { [0]=> string(3) "XML" } ``` ### SimpleXMLIterator::getChildren ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xmlIterator = new SimpleXMLIterator($xml); $xmlIterator->rewind(); var_dump($xmlIterator->getChildren()); // object(SimpleXMLIterator)#2 (1) { [0]=> string(3) "XML" } $xmlIterator->next(); var_dump($xmlIterator->getChildren()); // object(SimpleXMLIterator)#2 (1) { ["p"]=> string(18) "Here is some text." } $xmlIterator->next(); var_dump($xmlIterator->getChildren()); // NULL ``` ### SimpleXMLIterator::hasChildren ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xmlIterator = new SimpleXMLIterator($xml); $xmlIterator->rewind(); var_dump($xmlIterator->hasChildren()); // bool(false) $xmlIterator->next(); var_dump($xmlIterator->hasChildren()); // bool(true) ``` ### SimpleXMLIterator::key ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xmlIterator = new SimpleXMLIterator($xml); var_dump($xmlIterator->key()); // bool(false) $xmlIterator->rewind(); var_dump($xmlIterator->key()); // string(5) "title" $xmlIterator->next(); var_dump($xmlIterator->key()); // string(4) "body" ``` ### SimpleXMLIterator::next ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xmlIterator = new SimpleXMLIterator($xml); $xmlIterator->rewind(); $xmlIterator->next(); var_dump($xmlIterator->current()); // object(SimpleXMLIterator)#2 (1) { ["p"]=> string(18) "Here is some text." } ``` ### SimpleXMLIterator::rewind ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xmlIterator = new SimpleXMLIterator($xml); $xmlIterator->rewind(); var_dump($xmlIterator->current()); // object(SimpleXMLIterator)#2 (1) { [0]=> string(3) "XML" } ``` ### SimpleXMLIterator::valid ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body> <p>Here is some text.</p> </body> </document> XML; $xmlIterator = new SimpleXMLIterator($xml); $xmlIterator->rewind(); var_dump($xmlIterator->valid()); // bool(true) $xmlIterator->next(); var_dump($xmlIterator->valid()); // bool(true) $xmlIterator->next(); var_dump($xmlIterator->valid()); // bool(false) ``` ## SimpleXML ### simplexml_import_dom ```php <?php $dom = new DomDocument(); $dom->loadXML('<document><title>XML</title><body>Here is some text.</body></document>'); var_dump(simplexml_import_dom($dom)); // object(SimpleXMLElement)#2 (2) { ["title"]=> string(3) "XML" ["body"]=> string(18) "Here is some text." } ``` ### simplexml_load_file ```php <?php var_dump(simplexml_load_file(__DIR__ . '/example.xml')); // object(SimpleXMLElement)#1 (2) { ["title"]=> string(3) "XML" ["body"]=> string(18) "Here is some text." } ``` 上例中的 `example.xml` 文件内容: ```xml <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body>Here is some text.</body> </document> ``` ### simplexml_load_string ```php <?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <document> <title>XML</title> <body>Here is some text.</body> </document> XML; var_dump(simplexml_load_string($xml)); // object(SimpleXMLElement)#1 (2) { ["title"]=> string(3) "XML" ["body"]=> string(18) "Here is some text." } ```