2015-12-10 6 views
-1

Суть этого является, мне нужна помощь в выяснить, как я могу сделать это:Java XML DOM Синтаксический MathML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" display="inline" overflow="scroll" xsi:schemaLocation="http://www.w3.org/1998/Math/MathML http://www.w3.org/Math/XMLSchema/mathml2/mathml2.xsd"> 
<mml:apply> 
    <mml:plus/> 
    <mml:apply> 
     <mml:plus/> 
     <mml:cn>398.00</mml:cn> 
     <mml:apply> 
      <mml:times/> 
      <mml:cn>398.00</mml:cn> 
      <mml:cn>0.10</mml:cn> 
     </mml:apply> 
    </mml:apply> 
    <mml:apply> 
     <mml:plus/> 
     <mml:cn>18</mml:cn> 
     <mml:apply> 
      <mml:plus/> 
      <mml:cn>10</mml:cn> 
      <mml:cn>12.40</mml:cn> 
     </mml:apply> 
    </mml:apply> 
</mml:apply> 

Выполните расчет, как это: 398.00 + (398 *. 10) + 18 + 10 + 12.40

Запись на Java, я разбираю DOM, чтобы захватить эти имена тегов и числовые значения, но мне сложно написать алгоритм, который сделает это эффективно. Я думаю, что что-то с рекурсией может работать.

ответ

0

Да, рекурсия может это сделать:

извлечь ваши узлы на первом уровне, и перебирать

, если это является MML: сп: это число: сделано

Если MML: плюс :

  • извлечь две следующие из них: MML: применять
  • для каждого из них, сделать расчет на этом уровне
  • затем сделать операцию плюс
  • и вы можете также Е (calcul1 + calcul2) где calcul1 является результатом Printf первого MML: Нанести и т.д.

если это MMT: раз: то же самое с многократно

и т.д.

Смежные вопросы