繁体   English   中英

使用DOM解析XML文档

[英]XML document parsing with DOM

我有这样的xml文件:

element
 element1
  element1
element

现在:element1可以有文本,或者两个元素中的一个或两个都可以是text2 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时,它没有内容,而是存在另一个元素。 请帮我解决这个问题谢谢

如果每一行仅包含元素名称或文本内容,我将使用堆栈来解析此类上下文。 因此,定义堆栈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 ]

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

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

获取</element2> ,然后弹出两次,然后how are you -> S [ <element><element1>hi hello etc ]

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

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

获取</element3> ,然后弹出两次,然后变fine -> S [ <element><element1>hi hello etc ]

获取</element1> ,然后弹出两次,然后打个hi hello etc -> S [ <element> ]

你是这个意思吗??

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM