我们说我有一个像这样结构的xml-File
<_StoredUserInformation>
<UserName>
<WorkstationName>
<SessionID>
This_Session
</SessionID>
</WorkstationName>
</UserName>
</_StoredUserInformation>
我想在我的变量中的xml标签中存储每个值,例如:
$UserName = <UserName>
$SessionName = This_Session
etc...
我尝试使用ForceArray
中的XML::Simple
进行此操作,但我之后遇到了排序密钥的问题。来自KeyAttr
的{{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}解决方案几乎肯定不那么复杂}