目前试图弄清楚如何最好地处理以下示例 XML 数据:
<FOO>
<A>1</A>
<B>Some Stuff</B>
<C>
<C1>
<C2A><![CDATA[xxx]]></C2A>
<C2B><![CDATA[yyy]]></C2B>
</C1>
</C>
</FOO>
我目前正在使用 XML::Twig 对其他所有内容进行操作,并且我想继续使用此模块来实现我的目标,即:
从 C2A 和 C2B 中提取数据,并将其分配给变量。请注意,C2A 和 C2B 可能有多个条目,例如需要将它们连接到 @array 中。但是,我的问题是向下导航树,例如,如果我们按照我发现的另一个示例进行操作,这对于这些数据就足够了:
<MOVIE_LIST>
<MOVIE>
<NAME>Name of the Movie</NAME>
<MOVIE_ID>28372382</MOVIE_ID>
<DESCRIPTIONS>
<LONG_DESCRIPTION>This is a long description</LONG_DESCRIPTION>
<SHORT_DESCRIPTION>short description</SHORT_DESCRIPTION>
</DESCRIPTIONS>
<DIRECTOR_LIST>
<DIRECTOR>director 1</DIRECTOR>
<DIRECTOR>director 2</DIRECTOR>
</DIRECTOR_LIST>
</MOVIE>
<MOVIE>
...
</MOVIE>
</MOVIE_LIST>
解决方案是:@directors = $elt->first_child('DIRECTOR_LIST')->children_text('DIRECTOR');
但是,我的问题是,有时,这些孩子不存在(例如,根本没有发送 C 部分数据),这让我无休止的悲痛,因为以下内容不起作用:
@C = $elt->first_child('C')->first_child('C1')->children_text('C2');
我对如何实现我的目标感到很困惑,并且非常感谢任何建议,欢迎简单的回答;-)