【发布时间】:2019-09-07 11:06:46
【问题描述】:
我正在尝试从一个变量下的 XML 中获取元素,其中我拥有相同的 xml 树,但具有另一个 xml 命名空间前缀。
我有很多类似的元素,编写 3 个相同的类或元素并验证其中一个是否为空(避免异常)会很烦人。
使用 symfony 2.8,JMS/serializer 1.5.0
XML 看起来像这样:
<Dokument xmlns:wnio="http://crd.gov.pl/wzor/2013/12/12/1410/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://crd.gov.pl/wzor/2013/12/12/1410/ http://crd.gov.pl/wzor/2013/12/12/1410/schemat.xsd">
<wnio:OpisDokumentu>
...
</wnio:OpisDokumentu>
...
像这样:
<Dokument xmlns:pos="http://crd.gov.pl/xml/schematy/UPO/2008/05/09/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://crd.gov.pl/wzor/2013/12/12/1410/ http://crd.gov.pl/wzor/2013/12/12/1410/schemat.xsd">
<pos:OpisDokumentu>
...
</pos:OpisDokumentu>
...
现在我通过生成另一个元素并检查其中一个元素是否不为空来处理这个问题。但是为另一个命名空间编写下一个元素会使我的模型库非常庞大。
/**
* @Serializer\Type("MyBundle\Model\OpisDokumentu")
* @Serializer\XmlElement(namespace="http://crd.gov.pl/wzor/2013/12/12/1410/")
* @Serializer\SerializedName("OpisDokument")
* @Serializer\Expose
*/
private $opisDokumentuWnio;
/**
* @Serializer\Type("MyBundle\Model\OpisDokumentu")
* @Serializer\XmlElement(namespace="http://crd.gov.pl/xml/schematy/UPO/2008/05/09/")
* @Serializer\SerializedName("OpisDokument")
* @Serializer\Expose
*/
private $opisDokumentuPos;
...
//getters/setters
在这种情况下,我有一个带有 2 个变量和另一个 getter/setter 的对象,如下所示:
Dokument:
opisDokumentuWnio: ...
opisDokumentuPos: null
...
无论命名空间前缀如何变化,只想实现一个变量:
Dokument:
opisDokumentu: ...
...
【问题讨论】:
标签: php xml symfony jms-serializer