PyXB를 사용하여 익명의 복잡한 유형이있는 XSD에서 모듈을 생성 할 수 있습니까? 기본 유형 및 제약 조건 검사에는 기본 유형이 있습니까? 제 3 자 (익명으로) XSD를 사용PyXB : 좀 더 엄격한 익명 형식 생성하기
: 여기
> pyxbgen -u Foo.xsd -m Foo
Python for http://www.foo.com requires 1 modules
> ls
Foo.py Foo.xsd
: 나는 파이썬 모듈을 생성
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.foo.com" xmlns="http://www.foo.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ResultSet">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Bar">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" name="code" type="xs:string"/>
<xs:element minOccurs="0" name="description" type="xs:string"/>
<xs:element minOccurs="0" name="name" type="xs:string"/>
</xs:sequence>
<xs:attribute name="href" type="xs:string"/>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
그런 다음 파이썬 인터프리터에서
ResultSet
인스턴스를 만들고아래에 항목을 만들 수있었습니다. 0 :
> python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyxb
>>> import Foo
>>> Foo
<module 'Foo' from 'Foo.py'>
>>> rs = Foo.ResultSet()
>>> rs
<Foo.CTD_ANON object at 0x7f7360834950>
>>> rs.Bar
<pyxb.binding.content._PluralBinding object at 0x7f7360834a90>
>>> rs.Bar.append(pyxb.BIND(name='a', code='b', description ='c'))
>>> rs.Bar
<pyxb.binding.content._PluralBinding object at 0x7f39f1018a90>
>>> [x for x in rs.Bar ]
[<Foo.CTD_ANON_ object at 0x7f39f1018b90>]
그리고 rs.Bar[0]
의 회원과 상호 작용할 수 있습니다. 이 익명 complexType
의 code
요소가 의 속성이있다하더라도, 그것을 받아 들일 것이다
>>> rs.Bar.append(pyxb.BIND(name='a' ))
과 :
는하지만 날 귀찮게하는 것은 나도 할 수 있다는 것입니다. 필자는 StackOverflow에 관한 문서 및 기타 질문을 통해 PyXB가 데이터 형식을 즉각적으로 리버스 엔지니어링하려고 시도하고 있음을 알았습니다. 따라서 허용 범위를 설명 할 수 있습니다.
>>> rs.Bar.append(Something(name='a', code='b'))
를하고 누락 된 매개 변수에 대한 불평이 : 내가 기본적으로 말을 할 수 있도록 전 과정에 뭔가를 오버레이 할 수 있다면 원하는
. 지금까지 나는 pyxb.BIND()
의 결과를 적절한 매개 변수와 함께 반환하는 자체 함수를 작성하는 것에 대해 혼란 스러웠다. 그러나 이것은 상당한 수준의 수동 개입을 의미한다.
PyXB가 자동으로 그러한 지능을 만들 수있는 방법이 있습니까?