JMS Serializer를 사용한 XML 역 직렬화

진짜 그림자

이 매우 간단한 XML을 역 직렬화하려고합니다.

<?xml version="1.0" encoding="utf-8"?>
<root>
    <namespace>foo</namespace>
    <resource>bar</resource>
    <description>baz</description>
    <arguments>
        <argument>
            <name>foo</name>
            <type>string</type>
            <description>foo</description>
        </argument>
        <argument>
            <name>bar</name>
            <type>string</type>
            <description>bar</description>
        </argument>
    </arguments>
</root>

나는에 인수 요소를 역 직렬화 할 수없는 무엇을하려고 아무리 array또는 ArrayCollection배열이 항상 비어 끝으로 수집 모든 종류의 나.

/**
 * @Type("array<Model\Argument>")
 */
private $arguments;

/**
 * @Type("ArrayCollection<Model\Argument>")
 */
private $arguments;

둘 다 빈 배열로 끝납니다. 그래서 인수에 대해 별도의 개체를 만들려고했습니다.

따라서 원래 속성은 다음과 같이 끝납니다.

/**
 * @Type("Model\Arguments")
 */
private $arguments;

그리고 수업

class Arguments {
    /**
     * @Type("array<App\Blueprint\Model\Argument>")
     */
    private $arguments;

    /**
     * @return mixed
     */
    public function getArguments() {
        return $this->arguments;
    }

    /**
     * @param mixed $arguments
     */
    public function setArguments($arguments) {
        $this->arguments = $arguments;
    }
}

배열은 여전히 ​​비어 있습니다. 그러나 유형을로 변경 @Type("App\Blueprint\Model\Argument")하면 첫 번째 객체 만 정확한 객체를 얻을 수 있습니다.

역 직렬화 처리기를 등록하려고 할 때 SimpleXmlElement다음과 같이 오기 때문에 수정할 수 없으며 It is not yet possible to assign complex types to properties경고 표시됩니다.

편집하다

지금은 어리석은 방식으로 해결했습니다.

$registry->registerHandler(
    'deserialization',
    'Model\Arguments',
    'xml',
    function(XmlDeserializationVisitor $visitor, $data, array $type, DeserializationContext $context) {
        $arguments = [];
        foreach($data->children() as $child) {
            $arguments[] = SerializerBuilder::create()
                ->build()
                ->deserialize($child->asXML(), 'Model\Argument', 'xml');
        }

        return $arguments;
    }
);

누군가가 더 나은 해결책을 가지고 있다면 여기에 남겨 두십시오 .

데이비드 스파이스

당신은 아주 가까웠습니다. 두 개의 개별 클래스를 정의해야합니다.

/**
 * @Type("Model\Arguments")
 */
public $arguments;
/**
 * @Type("array<Model\Argument>")
 * @XmlList(inline = true, entry = "argument")
 */
public $argument;

클래스 @XmlList속성을 확인합니다 Argument. 게터와 세터도 제거 할 수 있습니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JMS 직렬 변환기-XML에서 비 반복 노드 구조를 역 직렬화

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

.NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

분류에서Dev

여러 네임 스페이스를 사용한 XML 역 직렬화

분류에서Dev

알 수없는 형식의 DataContractSerializer를 사용한 C # xml 역 직렬화

분류에서Dev

DataContractSerializer를 사용하여 개체에서 XML 역 직렬화

분류에서Dev

C # linq를 사용하여 XML 역 직렬화

분류에서Dev

Java 및 Simple XML serialiser / deserialiser를 사용하여 XML 파일 역 직렬화

분류에서Dev

간단한 XML 역 직렬화

분류에서Dev

Jackson 이상한 XML 역 직렬화

분류에서Dev

이름은 같지만 내용이 다른 여러 요소를 사용한 XML 역 직렬화

분류에서Dev

xsd.exe에서 XmlReader 및 클래스를 사용하여 Xml 역 직렬화

분류에서Dev

DataContractSerializer를 사용하여 역 직렬화

분류에서Dev

Firestore DB를 사용한 Flutter 데이터 직렬화 및 역 직렬화

분류에서Dev

xml 문서를 역 직렬화 할 수 있지만 동일한 문서로 직렬화 할 수 없음

분류에서Dev

요소 이름이 다른 동일한 개체를 사용하여 XML 역 직렬화

분류에서Dev

JMS Serializer는 다른 뷰를 사용하여 객체의 객체를 직렬화합니다.

분류에서Dev

clrmq를 통한 직렬화 및 역 직렬화

분류에서Dev

LocalDateTime-LocalDateTime.parse를 사용한 역 직렬화

분류에서Dev

newtonsoft를 사용한 API 응답 역 직렬화

분류에서Dev

dart를 사용한 객체 역 / 직렬화

분류에서Dev

Avro를 사용한 중첩 된 특정 유형 역 직렬화

분류에서Dev

추가 변수를 사용한 gson 배열 역 직렬화

분류에서Dev

BinaryFormatter를 통한 MemoryStream 역 직렬화

분류에서Dev

XML 역 직렬화 퍼즐

분류에서Dev

SQL Server XML 역 직렬화

분류에서Dev

동적 XML 역 직렬화

분류에서Dev

비트 크기 정의를 사용한 Java 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

특성을 사용하여 XML 역 직렬화 C # 배열

Related 관련 기사

  1. 1

    JMS 직렬 변환기-XML에서 비 반복 노드 구조를 역 직렬화

  2. 2

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  3. 3

    .NET DataContractJsonSerializer serializer를 사용하여 사전으로 JSON 직렬화 / 역 직렬화

  4. 4

    여러 네임 스페이스를 사용한 XML 역 직렬화

  5. 5

    알 수없는 형식의 DataContractSerializer를 사용한 C # xml 역 직렬화

  6. 6

    DataContractSerializer를 사용하여 개체에서 XML 역 직렬화

  7. 7

    C # linq를 사용하여 XML 역 직렬화

  8. 8

    Java 및 Simple XML serialiser / deserialiser를 사용하여 XML 파일 역 직렬화

  9. 9

    간단한 XML 역 직렬화

  10. 10

    Jackson 이상한 XML 역 직렬화

  11. 11

    이름은 같지만 내용이 다른 여러 요소를 사용한 XML 역 직렬화

  12. 12

    xsd.exe에서 XmlReader 및 클래스를 사용하여 Xml 역 직렬화

  13. 13

    DataContractSerializer를 사용하여 역 직렬화

  14. 14

    Firestore DB를 사용한 Flutter 데이터 직렬화 및 역 직렬화

  15. 15

    xml 문서를 역 직렬화 할 수 있지만 동일한 문서로 직렬화 할 수 없음

  16. 16

    요소 이름이 다른 동일한 개체를 사용하여 XML 역 직렬화

  17. 17

    JMS Serializer는 다른 뷰를 사용하여 객체의 객체를 직렬화합니다.

  18. 18

    clrmq를 통한 직렬화 및 역 직렬화

  19. 19

    LocalDateTime-LocalDateTime.parse를 사용한 역 직렬화

  20. 20

    newtonsoft를 사용한 API 응답 역 직렬화

  21. 21

    dart를 사용한 객체 역 / 직렬화

  22. 22

    Avro를 사용한 중첩 된 특정 유형 역 직렬화

  23. 23

    추가 변수를 사용한 gson 배열 역 직렬화

  24. 24

    BinaryFormatter를 통한 MemoryStream 역 직렬화

  25. 25

    XML 역 직렬화 퍼즐

  26. 26

    SQL Server XML 역 직렬화

  27. 27

    동적 XML 역 직렬화

  28. 28

    비트 크기 정의를 사용한 Java 사용자 정의 직렬화 및 역 직렬화

  29. 29

    특성을 사용하여 XML 역 직렬화 C # 배열

뜨겁다태그

보관