【问题标题】:XML document parsing with DOM使用 DOM 解析 XML 文档
【发布时间】:2012-11-02 08:30:38
【问题描述】:

我有一个这样的 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 时,它没有得到内容,而是有另一个元素。 请帮我解决这个问题 谢谢

【问题讨论】:

  • 你也应该发布代码。

标签: java xml parsing dom


【解决方案1】:

如果每一行只包含元素名称或单独的文本内容,我将使用堆栈来解析 这样的背景。所以,定义一个栈S,如果XML文件如下:

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

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

推送&lt;element&gt; --> S[&lt;element&gt;]

&lt;element1&gt; --> S[&lt;element&gt;, &lt;element1&gt;] 推hi hello etc --> S[&lt;element&gt;, &lt;element1&gt;, hi hello etc] 推&lt;element2&gt; --> S[&lt;element&gt;, &lt;element1&gt;, hi hello etc, &lt;element2&gt;] 推how are you --> S[&lt;element&gt;, &lt;element1&gt;, hi hello etc, &lt;element2&gt;, how are you] 得到&lt;/element2&gt;,然后Pop两次,得到how are you --> S[&lt;element&gt;,&lt;element1&gt;,hi hello etc] 推&lt;element3&gt; --> S[&lt;element&gt;, &lt;element1&gt;, hi hello etc, &lt;element3&gt;] 推fine --> S[&lt;element&gt;, &lt;element1&gt;, hi hello etc, &lt;element3&gt;, fine] 得到&lt;/element3&gt;,然后Pop两次,得到fine --> S[&lt;element&gt;,&lt;element1&gt;,hi hello etc] 得到&lt;/element1&gt;,然后Pop两次,得到hi hello etc --> S[&lt;element&gt;]

这是你的意思吗??

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 2013-12-24
    • 1970-01-01
    • 2011-12-15
    • 2012-12-04
    • 2015-12-10
    • 2012-01-08
    • 1970-01-01
    相关资源
    最近更新 更多