0

在我的模块中,我需要上传和读取 xml 数据文件,但我找不到任何示例。在我的表单上,我添加了文件,并且需要通过单击按钮来解析数据。我的代码:model.py

file = fields.Binary(string='File', attachment=True, store=True)
file_name = fields.Char('File name')

def parse_data_from_xml(self):
  if self.file:
    data = etree.parse(self.file)

.xml

<field name="file_name" string="File name"/>
<field name="file" string="Upload xml file" filename="file_name"/>
<button name="parse_data_from_xml" string="Upload data from file" type="object" class="oe_highlight"/>

我知道我的 parse_data_from_xml 函数不正确,但我找不到任何示例。数据 xml 文件是这样的:

<InfoPart>
    <MetricInfo>
      <CoordinateSystem>
        <SC63>
          <X></X>
        </SC63>
      </CoordinateSystem>
      <MeasurementUnit>
        <M>га</M>
      </MeasurementUnit>
      <PointInfo>
        <Point>
          <UIDP>1</UIDP>
          <PN>1001</PN>
          <DeterminationMethod>
            <Survey></Survey>
          </DeterminationMethod>
          <X>5403910.077</X>
          <Y>6379655.092</Y>
          <MX>0.05</MX>
          <MY>0.05</MY>
        </Point>
4

1 回答 1

0

我找到了一个答案,第一行 3 行是可以的,但其他行并没有想要的那么好。也许有人知道更好的方法。

stream = BytesIO(base64.b64decode(self.file))
root = ET.parse(stream).getroot()
points = []
for elem in root:
  for info in elem.findall('MetricInfo'):
    for minfo in info.findall('PointInfo'):
      for pinfo in minfo.findall('Point'):
        for pdata in pinfo:
          if pdata.tag == 'UIDP':
            p_seq = int(pdata.text)
于 2021-03-12T09:14:57.113 回答