gpt4 book ai didi

python - 使用 lxml 处理 XML 中缺失的标签

转载 作者:行者123 更新时间:2023-12-01 03:49:44 26 4
gpt4 key购买 nike

我正在使用代码描述 here 解析一个巨大的 XML 文件。而且效果很好。但是我意识到在某些情况下父元素丢失了。这是一个例子:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE dblp SYSTEM "dblp.dtd">
<dblp>

<article mdate="2011-01-11" key="journals/acta/Ernst77">
<author>George W. Ernst</author>
<title>Rules of Inference for Procedure Calls.</title>
<journal>Acta Inf.</journal>
<volume>8</volume>
<year>1977</year>
<pages>145-152</pages>
<url>db/journals/acta/acta8.html#Ernst77</url>
<ee>http://dx.doi.org/10.1007/BF00289246</ee>
</article>

<article mdate="2011-01-11" key="journals/acta/Pfaff83">
<author>G&uuml;nther E. Pfaff</author>
<title>The Construction of Operator Interfaces Based on Logical Input Devices.</title>
<pages>151-166</pages>
<year>1983</year>
<volume>19</volume>
<journal>Acta Inf.</journal>
<url>db/journals/acta/acta19.html#Pfaff83</url>
<ee>http://dx.doi.org/10.1007/BF00264473</ee>
</article>
<article mdate="2011-01-11" key="journals/acta/EngelfrietV88">
<author>Joost Engelfriet</author>
<author>Heiko Vogler</author>
<title>High Level Tree Transducers and Iterated Pushdown Tree Transducers.</title>
<pages>131-192</pages>
<year>1988</year>
<volume>26</volume>
<journal>Acta Inf.</journal>
<number>1/2</number>
<url>db/journals/acta/acta26.html#EngelfrietV88</url>
<ee>http://dx.doi.org/10.1007/BF02915449</ee>
</article>

<author>Antonio Gull&igrave;</author>
<title>Clustering and ranking for web information retrieval: methodologies for searching the web.</title>
<year>2008</year>
<school>University of Pisa</school>
<pages>1-137</pages>
<isbn>978-3-8364-5657-9</isbn>
<ee>http://d-nb.info/987753223</ee>

</dblp>

最后一条记录缺少开始和结束标记 <article> .

在代码(链接中提供)中,错误来自函数 extract_paper_elements在 for 循环中 for event, element in context 。这是错误:

Element dblp content does not follow the DTD, expecting (article | inproceedings | proceedings | book | incollection | phdthesis | mastersthesis | www)*, got (article article article author title year school pages isbn ee ), line 47, column 12

对于这种情况有什么解决办法吗?我也很高兴有一个解决方案来找到这些情况(使用 bash 命令或代码)。如果案例数量不是很多,我可以手动修复!

最佳答案

解决方案如您所料:手动修复损坏的 XML。

当您遇到任意验证错误时,没有可以自动应用的通用修复方法。人们可能会想象一些简单的情况会被自动覆盖,但通常可以有多种方法来解决验证错误。您通常会决定哪个是合适的并手动修复 XML(或修复生成无效 XML 的上游系统)。

然后您再次验证并解决任何进一步的问题。重复此循环,直到不再存在验证错误(就像修复编程语言中的语法问题一样)。

关于python - 使用 lxml 处理 XML 中缺失的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38446532/

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