| | 28 | |
| | 29 | def get_single_node(self): |
| | 30 | # Drop the STREAM-START event. |
| | 31 | self.get_event() |
| | 32 | |
| | 33 | # Compose a document if the stream is not empty. |
| | 34 | document = None |
| | 35 | if not self.check_event(StreamEndEvent): |
| | 36 | document = self.compose_document() |
| | 37 | |
| | 38 | # Ensure that the stream contains no more documents. |
| | 39 | if not self.check_event(StreamEndEvent): |
| | 40 | event = self.get_event() |
| | 41 | raise ComposerError("expected a single document in the stream", |
| | 42 | document.start_mark, "but found another document", |
| | 43 | event.start_mark) |
| | 44 | |
| | 45 | # Drop the STREAM-END event. |
| | 46 | self.get_event() |
| | 47 | |
| | 48 | return document |