【发布时间】:2019-11-27 10:39:32
【问题描述】:
去掉 - 使其可以被读取为 xml
解决方案:
# read XML file
my $filename = 'Finesse.txt';
open $FILE, '<', $filename or die "Can't open file $!";
my $document = do { local $/; <$FILE> };
$document =~ s/^[\- ] //mg;
my $dom = XML::LibXML->load_xml(string => $document);
say "Users in READY mode:";
say " ";
$teller = 0;
foreach my $title ($dom->findnodes('Team/users/User')) {
$status = $title->findvalue('./state');
if ($status eq "READY") {
say 'Naam : ', $title->findvalue('./firstName');
$teller++;
}
}
say "Total = ", $teller;
以下文件是根据网站的输出创建的
技巧.txt
- <Team>
<id>8</id>
<name>OurSupport</name>
<uri>/finesse/api/Team/8</uri>
- <users>
- <User>
<dialogs>/finesse/api/User/C.person/Dialogs</dialogs>
<extension />
<firstName>Caz</firstName>
<lastName>Person</lastName>
<loginId>C.Person</loginId>
<pendingState />
<state>ACTIVE</state>
<stateChangeTime>2019-07-15T19:54:40.846Z</stateChangeTime>
<uri>/finesse/api/User/C.Person</uri>
</User>
</users>
</Team>
感谢您提供解决方案的提示。
【问题讨论】:
-
您要问的实际问题是什么:如何删除“-”或如何在 perl 中解析 XML?尝试将每个帖子限制为一个问题。
-
建议不要使用XML::Simple,请考虑使用e.g. XML::LibXML 代替。请更清楚地解释
finesse.txt中的-标志的用途是什么? -
为什么预期的输出是
C.Person : Active?文件中也没有READY字符串,这是什么意思? -
finesse.txt 中的 - 标志是由网页产生的,我无法更改该输出,所以我必须处理它。你是对的,READY 应该是 ACTIVE
-
我认为这是从 Firefox 默认 XML 样式复制/粘贴。只需保存浏览器文档,就不会在其中包含 +/- 折叠标记。