0

我有一个这样的xml文件:

element
 element1
  element1
element

现在: element1 可以有文本,或/和两个元素 element2 element3 中的一个/两个,因此 xml 文件可以是

<element>
 <element1>
 hi hello etc
  </element1>
</element>

或者

<element>
 <element1>
 hi hello etc
 <element2>
 how are you
   </element2>
  <element3>
    fine
   </element3>
  </element1>
</element>

当它在上面的例子中时,我成功地解析它。我可以通过它们的标签访问节点并从中获取内容。当 xml 具有以下形式时,就会出现问题:

<element> 
<element1>
 <element2>
 how are you
   </element2>
  </element1>
</element>

我有一个循环,它遍历 xml 文档并检查标签 element1、element2、element3 并获取内容。对于上面的示例,我得到了接受并且循环终止。因为当它到达 element1 时,它没有得到内容,而是有另一个元素。请帮我解决这个问题谢谢

4

1 回答 1

0

如果每一行仅包含元素名称或文本内容,我将使用堆栈来解析此类上下文。所以,定义一个栈S,如果XML文件如下:

<element>
  <element1>
    hi hello etc
    <element2>
        how are you
    </element2>
    <element3>
        fine
    </element3>
  </element1>
</element>

所以整个想法可能是这样的:

<element> --> S[ <element>]

<element1> --> S[ <element>, <element1>]

hi hello etc--> S[ <element>, <element1>, hi hello etc]

<element2> --> S[ <element>, <element1>, hi hello etc, <element2>]

how are you --> S[ <element>, <element1>, hi hello etc, <element2>, how are you]

得到</element2>, 然后 Pop 两次, 得到how are you --> S[ <element>, <element1>, hi hello etc]

<element3> --> S[ <element>, <element1>, hi hello etc, <element3>]

fine --> S[ <element>, <element1>, hi hello etc, <element3>, fine]

得到</element3>, 然后 Pop 两次, 得到fine --> S[ <element>, <element1>, hi hello etc]

Get </element1>,然后 Pop 两次,得到hi hello etc --> S[ <element>]

你是这个意思吗??

于 2012-11-13T22:33:23.683 回答