是否有与JAXB等效的PHP?它被证明对Java开发非常有用,作为一个新的PHP,我想使用JAXB在PHP世界中提供的相同概念。
答案 0 :(得分:8)
我之前也试图找到同样的东西,但不能。所以我决定为PHP 5.3编写自己的库,它反映了JAXB的注释,将对象绑定到XML。
请在此处查看:https://github.com/lampjunkie/xml-hitch
希望其他人会觉得这很有用。
答案 1 :(得分:4)
我写了一个简单的,基于注释PAXB:https://github.com/ziollek/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>
解组
$xmlInput = '...'; //as above
/** @var SampleEntity $sampleEntity */
$sampleEntity = PAXB\Setup::getUnmarshaller()->unmarshall($xmlInput, 'SampleEntity');
答案 2 :(得分:2)
我正在寻找类似于JAXB的东西,但对于PHP,
PiXB似乎与JAXB类似, 实际上我没有尝试过,但看看这些例子似乎很有希望
答案 3 :(得分:1)
答案 4 :(得分:0)
有一个作曲家包:saber / xml。 您可以使用composer require saber / xml安装它。 有一个主页的教程和示例 见http://sabre.io/xml/
易于使用,功能丰富且积极维护。