PHP.mk документација

SimpleXMLElement::__construct

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

simplexmlelement.construct.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека simplexmlelement.construct.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
SimpleXMLElement::__construct

Референца за `simplexmlelement.construct.php` со подобрена типографија и навигација.

simplexmlelement.construct.php

SimpleXMLElement::__construct

класата mysqli_driver

SimpleXMLElement::__construct Creates a new SimpleXMLElement object

= NULL

public SimpleXMLElement::__construct(
         string $data,
         int $options = 0,
         bool $dataIsURL = false,
         string $namespaceOrPrefix = "",
         bool $isPrefix = false
)

Создава нов SimpleXMLElement object.

Параметри

data

Креира нов SimpleXMLElement објект dataIsURL is true.

options

Добро формиран XML стринг или патека или URL до XML документ ако Опционално се користи за да се специфицирадополнителни Libxml параметри LIBXML_NOEMPTYTAG, кои влијаат на читањето на XML документи. Опциите кои влијаат на излезот на XML документи (на пр.

Забелешка:

) се игнорираат тивко. LIBXML_PARSEHUGE Можеби ќе биде потребно да се помине

dataIsURL

Стандардно, dataIsURL is false. Користете true за да може да се обработи длабоко вгнестен XML или многу големи текстуални јазли. data за да се специфицира дека string data.

namespaceOrPrefix

е патека или URL до XML документ наместо

isPrefix

true if namespaceOrPrefix Префикс или URI на именски простор. false е префикс, false.

Errors/Exceptions

ако е URI; стандардно е E_WARNING Произведува Исклучок порака за грешка за секоја грешка пронајдена во XML податоците и дополнително фрла

Совети

од PHP 8.0.0. Силно се обесхрабрува потпирањето на оваа функција. libxml_use_internal_errors() ако XML податоците не можеа да се парсираат. libxml_get_errors() за да ги потиснете сите XML грешки, и

Примери

Забелешка:

Наведените примери може да вклучуваат examples/simplexml-data.php, што се однесува на XML стринг пронајден во првиот пример од основна употреба guide.

за да итерирате низ нив подоцна.

<?php

include 'examples/simplexml-data.php';

$sxe = new SimpleXMLElement($xmlstr);
echo
$sxe->movie[0]->title;

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

PHP: Behind the Parser

Пример #1 Креирање на SimpleXMLElement објект

<?php

$sxe
= new SimpleXMLElement('http://example.org/document.xml', 0, true);
echo
$sxe->asXML();

?>

Види Исто така

Белешки од корисници Управување со PDO конекции

- Врати нов ID на сесија
пред 8 години
The manual doesn't really explain what the $ns argument (and the accompanying $is_prefix) are for.

What they do is similar to the ->children() method: they set the context of the returned object to that namespace, so that access via ->elementName and ['attributeName'] refer to elements and attributes in that namespace.

In particular, they do *not* change the namespaces which exist on the document.

See this example:

<?php
// This XML contains two elements called <child>
// One is in the namespace http://example.com, with local prefix 'ws'
// The other has no namespace (no prefix, and no default namespace declared)
$xml = '<ws:example xmlns:ws="http://example.com"><child>Not in namespace</child><ws:child>In example namespace</ws:child></ws:example>';

$sx0 = new SimpleXMLElement($xml, 0, false);
$sx1 = new SimpleXMLElement($xml, 0, false, 'http://example.com');
$sx2 = new SimpleXMLElement($xml, 0, false, 'ws', true);

echo "
    Without: {$sx0->child}
    By namespace: {$sx1->child}
    By prefix: {$sx2->child}
";
?>

Output:

 Without: Not in namespace
 By namespace: In example namespace
 By prefix: In example namespace
- Поставете го контекстот на стриминг за следниот товар или запис на libxml документ
пред 18 години
This class is extendable, but it's too bad that its constructor cannot be overriden (PHP says it's a final method). Thus the class should be wrapped using the delegation principle rather that extended.
tudor at culise dot net
пред 9 години
You won't be able to load an XML file without root element:

//This will throw an exception
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?>', null, false);

//Here is the solution
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><root></root>', null, false);
info на ensostudio точка ru
пред 4 години
Extended SimpleXMLElement:
<?php
class XmlElement extends \SimpleXMLElement
{
    public static function factory(string $root): self
    {
        return new static('<?xml version="1.0" encoding="UTF-8"?><'.$root.'/>', LIBXML_BIGLINES | LIBXML_COMPACT);
    }

    /**
      * @param iterable $attributes An array of element attributes as name/value pairs
      * @return $this
      */
    public function addAttributes(iterable $attributes)
    {
        foreach ($attributes as $name => $value) {
            $this->addAttribute($name, $value);
        }

        return $this;
    }

    /**
      * @param string $name The sub-element name
      * @param string|array|null $valueOrAttributes The sub-element value or an array of attributes
      * @param string|null $namespace The sub-element namespace
      * @return static|null
      */
    public function addChild($name, $valueOrAttributes = null, $namespace = null)
    {
        if (is_array($valueOrAttributes)) {
            $child = parent::addChild($name, null, $namespace);
            foreach ($valueOrAttributes as $name => $value) {
                $child->addAttribute($name, $value);
            }
        } else {
            $child = parent::addChild($name, $valueOrAttributes, $namespace);
        }

        return $child;
    }

    /**
      * @param iterable $childs An array of sub-elements as name/value(or attributes) pairs
      * @return $this
      */
    public function addChilds(iterable $childs)
    {
        foreach ($childs as $name => $value) {
            $this->addChild($name, $value);
        }

        return $this;
    }
}
?>
ahmad dot mayahi at gmail dot com
пред 11 години
It's worth noting that the behavior of SimpleXmlElement::__construct is not exactly the same as simplexml_load_string, regarding libxml_use_internal_errors().

In my case,

<?php
libxml_use_internal_errors(true);
new \SimpleXmlElement($data);
?>

was still throwing error. But as soon as I switched to 

<?php
libxml_use_internal_errors(true);
simplexml_load_string($data);
?>

everything worked fine and I stopped getting an error.
bertolini dot cedric at me dot com
пред 15 години
Using libxml_use_internal_errors() may suppress errors but Exception still requires decent handling. I used following code snippet.

<?php
libxml_use_internal_errors(true);
try{
    $xmlToObject = new SimpleXMLElement($notSoWellFormedXML);
} catch (Exception $e){
    echo 'Please try again later...';
    exit();
}
?>
s dot coletta at unidata dot it
пред 16 години
As I was filling out a bug report, I realized why (speculation here) the constructor is final: so that functions like simplexml_load_file and simplexml_load_string can work. I imagine the PHP-ized code looks something like

<?php

function simplexml_load_file($filename, $class_name = "SimpleXMLElement", $options = 0, $ns = "", $is_prefix = false) {
    return new $class_name($filename, $options, true, $ns, $is_prefix);
}

?>

If we were to use a different $class_name and change the constructor's definition these functions wouldn't work.

There's no easy, sensible solution that keeps simplexml_load_file and simplexml_load_string.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.