PHP simpleXml问题有几个属性

时间:2016-10-05 13:10:05

标签: php simplexml xml-namespaces

我有一个像这样创建的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属性覆盖。

案例2 当我为最后一个节点添加前缀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?

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

由于

1 个答案:

答案 0 :(得分:0)

我修复了它,它用格式1进行了很好的格式化,但是firefox严重地解释了节点。