PHP 几个属性的 simpleXml 问题

PHP simpleXml issue with several attributes

我有一个要创建的 xml 节点:

 <Document xmlns="blabla" xmlns:xsi="blablablabla" xsi:schemaLocation="blablablablablabla">

我在我的代码中做了几个测试:

案例 1

    $document = $this->_xml;
    $document->addAttribute('xmlns:xmlns', self::XMLNS);
    $document->addAttribute("xmlns:xsi", self::XMLNS_XSI);
    $document->addAttribute("xmlns:xsi:schemaLocation", self::XSI_SCHEMALOCATION);

这给了我:

<Document xmlns="blabla" xsi="blablablabla" xsi:schemaLocation="blablablablablabla">

所以这里所有的 xmln 属性都被 xsi 属性覆盖了。

案例二 当我为最后一个节点添加前缀 xmlns 时:

    $document = $this->_xml;
    $document->addAttribute("xmlns:xsi", self::XMLNS_XSI, self::XMLNS);
    $document->addAttribute("xmlns:xsi:schemaLocation", self::XSI_SCHEMALOCATION);

这给了我:

<Document xmlns:xmlns="blabla" xmlns:xsi="blablablabla" xsi:schemaLocation="blablablabla">

案例 3 当我尝试最简单的版本时,它完全失败了:

    $document = $this->_xml;
    $document->addAttribute('xmlns', self::XMLNS);
    $document->addAttribute("xmlns:xsi", self::XMLNS_XSI);
    $document->addAttribute("xmlns:xsi:schemaLocation", self::XSI_SCHEMALOCATION);

这给了我:

<Document xmlns:xmlns="blabla" xmlns="blabla" xmlns:xsi="blablablabla" xsi:schemaLocation="blablablablablabla">

如何在我的节点中正确地拥有我的所有 3 个属性 xmlns、xmlns:xsi 和 xsi:schemaLocation?

请注意,由于这个 post,我解决了第一个问题: Unable add namespace with PHPs SimpleXML

谢谢

我修复了它,它在案例 1 中的格式很好,但是 firefox 对节点的解释很糟糕。