【问题标题】:Parsing xml output解析xml输出
【发布时间】:2015-09-09 02:14:02
【问题描述】:

在解析 xml 输出时需要帮助。我已经从 python docs 尝试了以下示例,但没有成功。还尝试了 xmltodict 。没有帮助。 有人可以帮忙吗。我似乎在这里遗漏了一些非常基本的东西。

>>> import xml.etree.ElementTree as ET
>>> ET.fromstring(out)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/auto/pysw/cel55/python/3.4.1/lib/python3.4/xml/etree/ElementTree.py", line 1325, in XML
    parser.feed(text)
xml.etree.ElementTree.ParseError: XML or text declaration not at start of entity: line 2, column 0
>>> 
>>> 

    out = '''
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <nf:rpc-reply xmlns:nf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="http://w
    ww.cisco.com/nxos:7.2.0.D1.1.:ngoamal">
     <nf:data>
      <show>
       <ngoam>
        <probe>
         <statistics>
          <summary>
           <__readonly__>
            <TABLE_summary>
             <ROW_summary>
              <last-clear-summary-stats>Tue Sep 08 11:55:52.662 PDT</last-clear-summ
    ary-stats>
              <tx>1001</tx>
              <rx>1</rx>
              <timeout>0</timeout>
              <unsent>0</unsent>
              <resp-tx>0</resp-tx>
              <resp-rx>0</resp-rx>
              <resp-unsent>0</resp-unsent>
             </ROW_summary>
            </TABLE_summary>
           </__readonly__>
          </summary>
         </statistics>
        </probe>
       </ngoam>
      </show>
     </nf:data>
    </nf:rpc-reply>
    ]]>]]>
    '''

谢谢, 马亨德拉

我根据建议更改了xml结构,但仍有问题。

下面是输出。

打印(输出)

<?xml version="1.0" encoding="ISO-8859-1"?>
<nf:rpc-reply xmlns:nf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="http://www.cisco.com/nxos:7.2.0.D1.1.:ngoamal">
 <nf:data>
  <show>
   <ngoam>
    <probe>
     <statistics>
      <summary>
       <__readonly__>
        <TABLE_summary>
         <ROW_summary>
          <last-clear-summary-stats>Tue Sep 08 11:55:52.662 PDT</last-clear-summary-stats>
          <tx>1001</tx>
          <rx>1</rx>
          <timeout>0</timeout>
          <unsent>0</unsent>
          <resp-tx>0</resp-tx>
          <resp-rx>0</resp-rx>
          <resp-unsent>0</resp-unsent>
         </ROW_summary>
        </TABLE_summary>
       </__readonly__>
      </summary>
     </statistics>
    </probe>
   </ngoam>
  </show>
 </nf:data>
</nf:rpc-reply>

t = ET.fromstring(out) 回溯(最近一次通话最后): 文件“”,第 1 行,在 文件“/auto/pysw/cel55/python/3.4.1/lib/python3.4/xml/etree/ElementTree.py”,第 1325 行,采用 XML parser.feed(文本) xml.etree.ElementTree.ParseError:XML 或文本声明不在实体开头:第 2 行,第 0 列

【问题讨论】:

  • 我们可以查看代码以及您的错误和数据吗?
  • 删除三引号文本的最后一行(即]]&gt;]]&gt;。它不属于其余部分。

标签: python xml


【解决方案1】:

您的 xml 文件没有正确写入,因为 <last-clear-summary-stats>Tue Sep 08 11:55:52.662 PDT</last-clear-summ ary-stats> 将该行替换为 &lt;last-clear-summary-stats&gt;Tue Sep 08 11:55:52.662 PDT&lt;/last-clear-summary-stats&gt; 并删除 ]]>]]

【讨论】:

  • 在进行上述更正后,我尝试了以下操作。仍然有问题。
  • 嗨,你能把它发到maheng3@gmail.com
【解决方案2】:

当多行字符串以换行符开头时,我收到您的错误:

out = '''
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <nf:rpc-reply xmlns:nf="urn:ietf:params:xml:ns:netconf:base:1.0" 

如果您在末尾删除换行符和 ]]&gt;]]&gt;,这将有效。 XML 文档不能有前面的空格:

out = '''<?xml version="1.0" encoding="ISO-8859-1"?>
    <nf:rpc-reply xmlns:nf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns="http://www.cisco.com/nxos:7.2.0.D1.1.:ngoamal">
     <nf:data>
      <show>
       <ngoam>
        <probe>
         <statistics>
          <summary>
           <__readonly__>
            <TABLE_summary>
             <ROW_summary>
              <last-clear-summary-stats>Tue Sep 08 11:55:52.662 PDT</last-clear-summary-stats>
              <tx>1001</tx>
              <rx>1</rx>
              <timeout>0</timeout>
              <unsent>0</unsent>
              <resp-tx>0</resp-tx>
              <resp-rx>0</resp-rx>
              <resp-unsent>0</resp-unsent>
             </ROW_summary>
            </TABLE_summary>
           </__readonly__>
          </summary>
         </statistics>
        </probe>
       </ngoam>
      </show>
     </nf:data>
    </nf:rpc-reply>
    '''

import xml.etree.ElementTree as ET
ET.fromstring(out)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2011-09-13
    • 2011-03-09
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多