【问题标题】:PHP simpleXml issue with several attributes具有多个属性的 PHP simpleXml 问题
【发布时间】:2016-10-05 13:10:04
【问题描述】:

我有一个像这样创建的 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

谢谢

【问题讨论】:

    标签: php simplexml xml-namespaces


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-12-23
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2012-09-08
      相关资源
      最近更新 更多