gpt4 book ai didi

xml - 文本::平衡和多行 xml

转载 作者:数据小太阳 更新时间:2023-10-29 02:16:40 24 4
gpt4 key购买 nike

好像我有点迷路了。

我需要解析一个很大(大约 100 MB)且非常难看的 xml 文件。如果我使用 parsefile,它会返回错误(文档元素后的垃圾),但它会很乐意解析文件的较小元素。

所以我决定将文件分解成元素并解析它们。由于不鼓励使用正则表达式解析 XML(无论如何我都试过了,但我得到了重复的结果),我尝试了 Text::Balanced

有点像

use Text::Balanced qw/extract_tagged/;

while (<FILE>) {
my $result = extract_tagged($_, "<tag>");
print $result if defined $result;
}

工作得很好,所以我可以提取适合一行的标记条目。然而,有了更大的东西

use Text::Balanced qw/extract_tagged/;
use File::Slurp;

my $test = read_file("file");
my $result = extract_tagged($text, "<tag>");
print $result;

不起作用。它读取文件,但在那里找不到标记的项目。

所以问题是如何在没有 XML::Parser 的情况下提取给定标签之间的任何内容?如果可能的话,我真的真的需要避免咀嚼它。

附言搜索将返回正则表达式指南、heredoc howtos 以及我要查找的任何内容

附言我是个白痴,一直在尝试解析无效文件。仍然好奇如果解析器失败,如何截断文件。


bvr 的回答很接近,它确实会检索一些数据,但如果缺少顶级标签则不会。

最佳答案

对于损坏的 XML,我会尝试设置 recover XML::LibXML 的选项.它使它忽略解析错误并继续。

关于xml - 文本::平衡和多行 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7166423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com