union
xsdata.formats.dataclass.parsers.nodes.union
UnionNode
Bases: XmlNode
XmlNode for union fields with at least one data class.
The node will record all child events and in the end will replay them and try to build all possible objects and sort them by score before deciding the winner.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var | XmlVar | The xml var instance | required |
attrs | Dict | The element attributes | required |
ns_map | Dict | The element namespace prefix-URI map | required |
position | int | The current objects length, everything after this position are considered children of this node. | required |
config | ParserConfig | The parser config instance | required |
context | XmlContext | The xml context instance | required |
Source code in xsdata/formats/dataclass/parsers/nodes/union.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
|
filter_candidates()
Filter union candidates by fixed attributes.
Source code in xsdata/formats/dataclass/parsers/nodes/union.py
68 69 70 71 72 73 74 75 |
|
filter_fixed_attrs(candidate, parent_ns)
Return whether the node attrs are incompatible with fixed attrs.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
candidate | Type | The candidate type | required |
parent_ns | Optional[str] | The parent namespace | required |
Source code in xsdata/formats/dataclass/parsers/nodes/union.py
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
|
child(qname, attrs, ns_map, position)
Record the event for the child element.
This entry point records all events, as it's not possible to detect the target parsed object type just yet. When this node ends, it will replay all events and attempt to find the best matching type for the parsed object.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
qname | str | The element qualified name | required |
attrs | Dict | The element attributes | required |
ns_map | Dict | The element namespace prefix-URI map | required |
position | int | The current length of the intermediate objects | required |
Source code in xsdata/formats/dataclass/parsers/nodes/union.py
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
|
bind(qname, text, tail, objects)
Bind the parsed data into an object for the ending element.
This entry point is called when a xml element ends and is responsible to replay all xml events and parse/bind all the children objects.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
qname | str | The element qualified name | required |
text | Optional[str] | The element text content | required |
tail | Optional[str] | The element tail content | required |
objects | List | The list of intermediate parsed objects | required |
Returns:
Type | Description |
---|---|
bool | Always returns true, if the binding process fails |
bool | it raises an exception. |
Raises:
Type | Description |
---|---|
ParserError | If none of the candidate types matched the replayed events. |
Source code in xsdata/formats/dataclass/parsers/nodes/union.py
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
|