【发布时间】:2015-06-17 08:20:01
【问题描述】:
如何解析类似 xml 的字符串并将其转换为单独的列表?
我正在尝试转换以下字符串:
<Categories>
<Category Assigned="0">
6 Level
<Category Assigned="1">
6.2 Level
<Category Assigned="0">
6.3 Level
<Category Assigned="0">
6.4 Level
<Category Assigned="1">
6.5 Level
</Category>
</Category>
</Category>
</Category>
</Category>
</Categories>
到一个单独的列表,如:
6 Level/6.2 Level/6.3 Level/6.4 Level/6.5 Level, 6 Level/6.2 Level
exiv2 的 Robin Mills 提供了一个 perl 脚本: http://dev.exiv2.org/boards/3/topics/1912?r=1923#message-1923
这还需要解析Assigned="1"。如何在 C++ 中使用 digikam,在 dmetadata.cpp 内部使用如下结构:
QStringList ntp = tagsPath.replaceInStrings("<Category Assigned="0">", "/");
我没有足够的编程背景来解决这个问题,也没有在网上找到任何类似的代码示例。我还想将代码包含在 exiv2 本身中,以便其他应用程序可以受益。
工作代码将包含在 digikam 中:https://bugs.kde.org/show_bug.cgi?id=345220
【问题讨论】:
-
Category元素真的是这样嵌套的吗?这很不寻常 -
很不寻常,是的。这就是 ACDSee 的工作方式。