【发布时间】:2021-08-15 06:55:30
【问题描述】:
如何使用 XML::LibXML 解析 xml 字典
至少我认为它被称为字典。我没有找到好的资源来描述:
- 这种 XML 格式
- XML::LibXML。 Perldoc 甚至没有提到我在 StackOverflow 上找到的 findvalue 或 textContent。
我有这个 xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Clippings</key>
<array>
<dict>
<key>Abbreviation</key>
<string>;adeb</string>
<key>Creation Date</key>
<string>2017-04-22T22:02:32Z</string>
<key>DateLastUsed</key>
<string>2021-05-21T13:53:20Z</string>
<key>Label</key>
<string></string>
<key>Modification Date</key>
<string>2018-04-30T18:16:36Z</string>
<key>Option</key>
<string></string>
<key>Plain Text</key>
<string>print STDERR "(debug ⌘) $_\n" for @⌘;</string>
<key>SortOrder</key>
<string>1</string>
<key>TotUsed</key>
<integer>579</integer>
<key>uuidString</key>
<string>96707AF9-E9C4-4770-A930-B6889C354243</string>
</dict>
<dict>
<key>Abbreviation</key>
<string>;ahtml</string>
<key>DateLastUsed</key>
<string>2016-03-09T15:50:43Z</string>
<key>Modification Date</key>
<string>2016-05-18T09:35:49Z</string>
<key>Option</key>
<string></string>
<key>Plain Text</key>
<string>print "(debug) Enter to continue:\n";
my $debug = <STDIN>;</string>
<key>Service</key>
<string></string>
<key>SortOrder</key>
<string>130</string>
<key>TotUsed</key>
<integer>1</integer>
<key>uuidString</key>
<string>E74E6ADC-7BE3-493B-AD1E-32729CAB2B77</string>
</dict>
</array>
<key>sortOrderForThisSet</key>
<string>0</string>
<key>theAbbsFilePath</key>
<string>/Users/user/path/to/file</string>
<key>unsavedChanges</key>
<false/>
<key>uuidCheckDone</key>
<string>yes</string>
</dict>
</plist>
到目前为止,正在尝试这个 perl:
#!/usr/bin/perl
use strict;
use warnings;
my $filename = '/Users/user/path/to/file';
use XML::LibXML;
# Parse the XML
my $xml = XML::LibXML->load_xml(location => $filename);
for my $entry ($xml->findnodes('//dict')) {
my $key = $entry->findvalue('@key');
my $value = $entry->textContent;
print "$key = $value";
}
值将所有值一起打印,而键根本不打印任何内容。
【问题讨论】:
-
文档被分解成一堆页面,其中一些是您发现的。但这里有一个非常有用的guide(由另一个较旧的 XML 库的作者编写)。 SO 上也有很多帖子,其中一些带有摘要和指南。
-
问题没有说明您需要从/从本文档中获得什么...?
标签: perl