将xml标记存储在perl中的变量中

时间:2015-12-07 06:39:14

标签: xml perl data-structures

我们说我有一个像这样结构的xml-File

<_StoredUserInformation>
    <UserName>
        <WorkstationName>
            <SessionID>
                 This_Session
            </SessionID>
        </WorkstationName>
    </UserName>
</_StoredUserInformation>

我想在我的变量中的xml标签中存储每个值,例如:

$UserName = <UserName>
$SessionName = This_Session
etc...

我尝试使用ForceArray中的XML::Simple进行此操作,但我之后遇到了排序密钥的问题。来自KeyAttr的{​​{1}}很可能不适用于嵌套那么多的数据结构。

还有其他建议如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我建议你通过回溯和重新思考你想要完​​成的事情来解决它。 XML::Simple是一条痛苦而恼人的代码之路,而只是 没有充分理由使用它。

该模块表示“不鼓励”#39;有充分理由 - 请看这里扩展原因:

Why is XML::Simple "Discouraged"?

XML::Twig这样的事情中,你要做的事情相对容易 - 我会为了给出一个答案来说明 - 但我认为如果你做的话,那就不那么必要了。不必做XML::Simple强加于你的hacky bodge:

#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;

my $twig = XML::Twig -> parsefile ('your_file.xml' );

my $session_id = $twig -> get_xpath ('//SessionID',0) -> trimmed_text;
print "Session: $session_id\n";

如果你真的想要,你可以使用类似的方法将标记放入变量中,但我建议你实际上并不需要 - 而你在这里做的是追逐{{ 3}}。

我建议 - 回溯一下,解释你实际上想要完成的事情,然后提出另一个问题,因为使用XY Problem或{{1}解决方案几乎肯定不那么复杂}