解析重复子元素python

2024-10-01 09:15:54 发布

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

我试图使用Python解析包含重复子元素的XML文档。当我试图解析数据时,它会创建一个空文件。如果我注释掉重复的子元素代码(请参阅下面python脚本中粗体部分),则文档将正确生成。有人能帮忙吗?在

XML:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<FRPerformance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <FRPerformanceShareClassCurrency>
    <FundCode>00190</FundCode>
    <CurrencyID>USD</CurrencyID>
    <FundShareClassCode>A</FundShareClassCode>
    <ReportPeriodFrequency>Quarterly</ReportPeriodFrequency>
    <ReportPeriodEndDate>06/30/2012</ReportPeriodEndDate>
    <Net>
      <Annualized>
        <Year1>-4.909000000</Year1>
        <Year3>10.140000000</Year3>
        <Year5>-22.250000000</Year5>
        <Year10>-7.570000000</Year10>
        <Year15>-4.730000000</Year15>
        <Year20>-0.900000000</Year20>
        <SI>1.900000000</SI>
      </Annualized>
    </Net>
    <Gross>
      <Annualized>
        <Month3>1.279000000</Month3>
        <YTD>7.294000000</YTD>
        <Year1>-0.167000000</Year1>
        <Year3>11.940000000</Year3>
        <Year5>-21.490000000</Year5>
        <Year10>-7.120000000</Year10>
        <Year15>-4.420000000</Year15>
        <Year20>-0.660000000</Year20>
        <SI>2.110000000</SI>
      </Annualized>
      <Cumulative>
        <Month1Back>2.288000000</Month1Back>
        <Month2Back>-1.587000000</Month2Back>
        <Month3Back>0.610000000</Month3Back>
        <CurrentYear>7.294000000</CurrentYear>
        <Year1Back>-2.409000000</Year1Back>
        <Year2Back>13.804000000</Year2Back>
        <Year3Back>20.287000000</Year3Back>
        <Year4Back>-78.528000000</Year4Back>
        <Year5Back>-0.101000000</Year5Back>
        <Year6Back>9.193000000</Year6Back>
        <Year7Back>2.659000000</Year7Back>
        <Year8Back>9.208000000</Year8Back>
        <Year9Back>25.916000000</Year9Back>
        <Year10Back>-3.612000000</Year10Back>
      </Cumulative>
      <HistoricReturns>
        <HistoricReturns_Item>
          <Date>Fri, 28 Feb 1997 00:00:00 -0600</Date>
          <Return>32058.090000000</Return>
        </HistoricReturns_Item>
        <HistoricReturns_Item>
          <Date>Fri, 28 Feb 2003 00:00:00 -0600</Date>
          <Return>36415.110000000</Return>
        </HistoricReturns_Item>
        <HistoricReturns_Item>
          <Date>Fri, 29 Feb 2008 00:00:00 -0600</Date>
          <Return>49529.290000000</Return>
        </HistoricReturns_Item>
        <HistoricReturns_Item>
          <Date>Fri, 30 Apr 1993 00:00:00 -0600</Date>
          <Return>21621.500000000</Return>
        </HistoricReturns_Item>
</<HistoricReturns>

Python脚本

^{pr2}$

Tags: 元素datereturnitemfebsifriyear1
1条回答
网友
1楼 · 发布于 2024-10-01 09:15:54

示例XML和python代码在结构上不匹配。或者

  • XML中缺少一个结束的</Gross>标记(应该在<HistoricReturns>部分开始之前)——在这种情况下,代码是正确的或者
  • 代码应该是for node6 in node3.findall('./HistoricReturns'):,即node3,而不是{}

注意:XML示例不完整(它不是格式良好的XML),因为它缺少GrossFRPerformanceShareClassCurrency和{}的结束标记,因此无法确定地回答问题。希望这有帮助。在

相关问题 更多 >