PHP JAXB等价物

PHP JAXB等价物,php,xml,jaxb,Php,Xml,Jaxb,是否存在与JAXB等价的PHP?事实证明,它对Java开发非常有用,作为一名新的PHP程序员,我希望使用JAXB在PHP世界中提供的相同概念。试试看我以前也试图找到相同的东西,但找不到。因此,我决定为PHP5.3编写自己的库,它镜像JAXB的注释以将对象绑定到XML 在这里查看: 希望其他人会发现这很有用。我正在寻找类似于JAXB但适用于PHP的东西 似乎类似于JAXB, 实际上我没有试过,但看看这些例子似乎很有希望我写了一个简单的基于注释的PAXB:。检查此溶液是否足够 带有XML绑定注释的示

是否存在与JAXB等价的PHP?事实证明,它对Java开发非常有用,作为一名新的PHP程序员,我希望使用JAXB在PHP世界中提供的相同概念。

试试看

我以前也试图找到相同的东西,但找不到。因此,我决定为PHP5.3编写自己的库,它镜像JAXB的注释以将对象绑定到XML

在这里查看:


希望其他人会发现这很有用。

我正在寻找类似于JAXB但适用于PHP的东西

似乎类似于JAXB,
实际上我没有试过,但看看这些例子似乎很有希望

我写了一个简单的基于注释的PAXB:。检查此溶液是否足够

带有XML绑定注释的示例类

/**
 * @XmlElement(name="root")
 */
class SampleEntity {

    /**
     * @XmlElement(name="attribute-value", type="AttributeValueEntity")
     */
    private $nestedEntity;

    private $text;

    /**
     * @XmlElementWrapper(name="number-list")
     */
    private $number = array();


    public function __construct($number = array(), $nestedEntity = null, $text = "")
    {
        $this->number = $number;
        $this->nestedEntity = $nestedEntity;
        $this->text = $text;
    }
}

class AttributeValueEntity {

    /**
     * @XmlAttribute
     */
    private $attribute;

    /**
     * @XmlElement
     */
    private $value;

    /**
     * @param string $attribute
     * @param string $value
     */
    public function __construct($attribute = "", $value = "")
    {
        $this->attribute = $attribute;
        $this->value = $value;
    }

    /**
     * @return string
     */
    public function getAttribute()
    {
        return $this->attribute;
    }

    /**
     * @return string
     */
    public function getValue()
    {
        return $this->value;
    }
}
编组示例:

 $sampleEntity = new SampleEntity(
    array(1,2,3),
    new AttributeValueEntity('sample attribure', 'sample value'),
    'Sample text'
);

echo PAXB\Setup::getMarshaller()->marshall($sampleEntity, true);
以及输出:

<?xml version="1.0"?>
<root>
    <attribute-value attribute="sample attribure">
        <value>sample value</value>
    </attribute-value>
    <text>Sample text</text>
    <number-list>
        <number>1</number>
        <number>2</number>
        <number>3</number>
    </number-list>
</root>

它有一个composer包:sabre/xml。 您可以使用composer require sabre/xml安装它。 有一个教程和示例的主页 看


它易于使用,功能丰富,维护积极

JAXB做两件事——从XML模式生成java代码,以及XML到java对象的运行时绑定。您想要哪一个?XML->Object的运行时绑定。
$xmlInput = '...'; //as above
/** @var SampleEntity $sampleEntity */
$sampleEntity = PAXB\Setup::getUnmarshaller()->unmarshall($xmlInput, 'SampleEntity');