Python 3.4 lxml.etree:需要开始标记,未找到“<”,第1行,第1列

2024-04-19 01:01:19 发布

您现在位置:Python中文网/ 问答频道 /正文

朋友们

作为一个新手,我最多也没能搞清楚论坛里有什么。最后,我要做的就是获取一些简单的xml文件,并将它们一次性转换为CSV(尽管这段代码每次只提供一个)。在我看来好像没有正式的名字空间,但我不确定。 我有这段代码(我用了一个标题‘SubmittingSystemVendor’,但我真的想把它们都写到CSV:

import csv
import lxml.etree
x = r'C:\Users\...\jh944.xml'

with open('output.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow('SubmittingSystemVendor')
    root = lxml.etree.fromstring(x)

    writer.writerow(row)

以下是XML文件的示例:

<?xml version="1.0" encoding="utf-8"?>
<EOYGeneralCollectionGroup SchemaVersionMajor="2014-2015" SchemaVersionMinor="1" CollectionId="157" SubmittingSystemName="MISTAR" SubmittingSystemVendor="WayneRESA" SubmittingSystemVersion="2014" xsi:noNamespaceSchemaLocation="http://cepi.state.mi.us/msdsxml/EOYGeneralCollection2014-20151.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <EOYGeneralCollection>
        <SubmittingEntity>
            <SubmittingEntityTypeCode>D</SubmittingEntityTypeCode>
            <SubmittingEntityCode>82730</SubmittingEntityCode>
        </SubmittingEntity>

提前谢谢!


Tags: 文件csv代码importhttpxmllxmlwriter
1条回答
网友
1楼 · 发布于 2024-04-19 01:01:19

您使用的是lxml.etree.fromstring,但给它一个文件路径作为参数。这意味着它试图将“C:\ Users…\jh944.xml”解释为要解析的xml数据。

相反,您需要打开包含此XML的文件。您只需将对fromstring的调用替换为lxml.etree.parse,它将接受文件名或打开文件对象作为参数。

相关问题 更多 >