<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE us-patent-application SYSTEM "us-patent-application-v42-2006-08-23.dtd" [ ]>
<us-patent-application lang="EN" dtd-version="v4.2 2006-08-23" file="US20110000001A1-20110106.XML" status="PRODUCTION" id="us-patent-application" country="US" date-produced="20101222" date-publ="20110106">
<us-bibliographic-data-application lang="EN" country="US">
<publication-reference>
<document-id>
<country>US</country>
<doc-number>20110000001</doc-number>
<kind>A1</kind>
<date>20110106</date>
</document-id>
</publication-reference>
<application-reference appl-type="utility">
<document-id>
<country>US</country>
<doc-number>12838840</doc-number>
<date>20100719</date>
</document-id>
</application-reference>
<us-application-series-code>12</us-application-series-code>
<priority-claims>
<priority-claim sequence="01" kind="national">
<country>IL</country>
<doc-number>189088</doc-number>
我正在尝试使用Python解析从Google获得的XML数据。它是一个大约500 MB的大文件。它有大约十万行,这使我很难共享xml文件的内容。该文件的一个问题是它不包含任何父节点,因此我必须为我的工作创建虚拟根。但是,我认为在整个文件中多次重复打开XML行,并且还有多个特殊字符实例(“!”)。 我运行的代码抛出解析错误 -
“XML.etree.ElementTree.ParseError:格式不正确(无效令牌): 第414行,第2栏“。
我认为这是因为这一行包含一个特殊字符。以下是该行的内容:
"<!DOCTYPE us-patent-application SYSTEM "us-patent-application-v42-2006-08-23.dtd" [ ]>"
同时,XML中的开头行在整个文件中重复多次。这是这条线的样子:
"<?XML version="1.0" encoding="UTF-8"?>"
有没有办法可以删除这些行的多个实例,以便我可以解析文件。由于它是一个大文件,我无法发布它的内容。不过,我已经发布了几行XML文件,只是为了介绍内容。在整个文件中重复类似的内容。第1行和第2行在XML文件中重复多次,我正在寻找一些方法来删除它们的多次出现。我还在这里附上了我的代码片段。
import xml.etree.ElementTree as ET
import csv
import re
with open("ipa110106.xml") as f:
xml = f.read()
tree = ET.fromstring(re.sub(r"(<\?xml[^>]+\?>)", r"\1<root>", xml) + "</root>")
root = tree.getroot()
check_elem = root.find('./!DOCTYPE us-patent-application SYSTEM "us-patent-application-v42-2006-08-23.dtd"')
elem.remove(check_elem)
file.write('b.xml')