Adicionando informações externas ao ParseResults antes de retornar

Eu quero adicionar informações externas ao ParseResults antes de retornar. Devolvo os resultados da análise como asXML (). Os dados externos representados como dicionário para serem analisados ​​como XML na análise final.

Este o código antes de adicionar dados externos de importação pyparsing *

# a hypothetical outer parser, with an unparsed SkipTo element
color = oneOf("red orange yellow green blue purple")
expression = SkipTo("XXX") + Literal("XXX").setResultsName('ex') + color.setResultsName('color')

data = "JUNK 100 200 10 XXX green"
print expression.parseString(data).dump()

# main grammar
def minorgrammar(toks):
    # a simple inner grammar
    integer = Word(nums)
    grammar2 = integer("A").setResultsName('A') + integer("B").setResultsName('B') + integer("C").setResultsName('C')

    # use scanString to find the inner grammar
    # (since we just want the first occurrence, we can use next
    # instead of a for loop with a break)
    t,s,e = next(grammar2.scanString(toks[0],maxMatches=1))



    # remove 0'th element from toks
    del toks[0]

    # return a new ParseResults, the sum of t and everything 
    # in toks after toks[0] was removed
    return t + toks

grammar1 = expression.setParseAction(minorgrammar)
x = grammar1.parseString(data).asXML("main")
print x 

a saída é

<main>
  <A>100</A>
  <B>200</B>
  <C>10</C>
  <ex>XXX</ex>
  <color>green</color>
</main>

o código depois de adicionar dados externos

    ...
    external_data = {'name':'omar', 'age':'40'}

    return t + toks + ParseResults(external_data)

grammar1 = expression.setParseAction(minorgrammar)

x = grammar1.parseString(data).asXML("main")

print x
a saída
<main>
  <A>100</A>
  <B>200</B>
  <C>10</C>
  <ex>XXX</ex>
  <color>green</color>
  <ITEM>{&apos;age&apos;: &apos;40&apos;, &apos;name&apos;: &apos;omar&apos;}</ITEM>
</main>

Eu quero a saída na forma

<main>
  <A>100</A>
  <B>200</B>
  <C>10</C>
  <ex>XXX</ex>
  <color>green</color>
  <name>omar</name>
  <age>40</age>
</main>

Qual é o erro desse código? Thans

questionAnswers(2)

yourAnswerToTheQuestion