标签: lxml

IOError 将请求 Response.content 传递给 lxml.etree.parse()

我在网页上有以下 xml -

<entry>
    <id>1750</id>
    <title>variablename</title>
    <source>
      com.tidalsoft.webclient.tes.dsp.db.datatypes.Variable
    </source>
    <tes:variable>
        <tes:ownername>ownergroup</tes:ownername>
        <tes:productiondate>2015-08-17T00:00:00-0400</tes:productiondate>
        <tes:readonly>N</tes:readonly>
        <tes:publish>N</tes:publish>
        <tes:description>
          Decription Here
        </tes:description>
        <tes:startcalendar>0</tes:startcalendar>
        <tes:ownerid>666</tes:ownerid>
        <tes:type>1</tes:type>
        <tes:lastusermodifiedtime>2015-06-15T15:42:27-0400</tes:lastusermodifiedtime>
        <tes:innervalue>\\share\location</tes:innervalue>
        <tes:calc>N</tes:calc>
        <tes:name>variablename</tes:name>
        <tes:startdate>1899-12-30T00:00:00-0500</tes:startdate>
        <tes:pub>Y</tes:pub>
        <tes:lastvalue>\\share\location</tes:lastvalue>
        <tes:id>1750</tes:id>
        <tes:startdateasstring>18991230000000</tes:startdateasstring>
        <tes:lastchangetime>2015-06-15T15:42:27-0400</tes:lastchangetime>
        <tes:clientcachelastchangetime>2015-08-17T09:56:49-0400</tes:clientcachelastchangetime>
    </tes:variable>
</entry>
Run Code Online (Sandbox Code Playgroud)

我正在尝试解析这些数据。我有一个通过请求 -

r = requests.get(url, auth=('username', 'password'))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试解析内容时出现错误。

>>> xmlObject = etree.parse(r.content)
Traceback (most recent call last):
  File "apiTest.py", line 46, in <module>
    xmlObject = etree.parse(r.content)
  File "lxml.etree.pyx", line 3310, in lxml.etree.parse (src\lxml\lxml.etree.c:7
2517)
  File "parser.pxi", line 1791, in lxml.etree._parseDocument (src\lxml\lxml.etre
e.c:105979)
  File "parser.pxi", line 1817, …
Run Code Online (Sandbox Code Playgroud)

python lxml

0
推荐指数
1
解决办法
1064
查看次数

在 Python LXML XSLT 中设置(多个)参数的示例

寻找这个问题的解决方案有一段时间了,因为文档并不是很清楚。

我最终使用了下面的方法,并认为我会分享回来。

python xslt lxml params

0
推荐指数
1
解决办法
1980
查看次数

将单个项目列表Pythonic转换为字符串

我很好奇将单个项目列表转换为字符串的高效/Pythonic 实现是什么。我正在使用lxmlapi,特别xpath是它返回 a listof Elements。

假设我有以下 xml

<Root>
  <Name>MyName</Name>
  <Comment>MyComment</Comment>
  <Details>
    <Value>1</Value>
  </Details>
</Root>
Run Code Online (Sandbox Code Playgroud)

现在我想检索 的值a = xpath('Comment/text()')(假设上下文节点是Root)。我可以使用以下之一。

strExample = a[0] 
Run Code Online (Sandbox Code Playgroud)

或者

strExample = ''.join(a)
Run Code Online (Sandbox Code Playgroud)

我认为前者会(稍微)更有效率。就可读性和效率而言,其中之一或某种替代方法是首选方法。

python performance lxml

0
推荐指数
1
解决办法
5348
查看次数

lxml将"<"转换为&lt;.为什么?

我已经盯着这个问题视而不见了.

我正在将XML封装的HTML数据融入Atlassian Confluence.对于-tags,我需要添加span-tag.但无论我如何尝试,lxml-lib分别将我的<和>转换为<和>.但是,转换仅适用于我的新标签,其中的任何现有标签都可以不受影响!

看看这个Python代码:

for x in doc.iter():
    if x.tag == "td":
        print x.text
        x.text = "no tags"
        print etree.dump(x)
        x.text = "<span>one tag</span>"
        print etree.dump(x)
Run Code Online (Sandbox Code Playgroud)

对于此输入:

<tr>
  <td>apa</td>
  <td>1.2</td>
  <td>
    <a href="http://korv.com/apa.tar.gz">3.4</a>
  </td>
  <td>no</td>
</tr>
<tr>
  <td>coreutils</td>
  <td>6.12</td>
  <td>
    <a href="http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz">8.21</a>
  </td>
  <td>no</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

这是输出:

<td>no tags</td>None
<td>&lt;span&gt;one tag&lt;/span&gt;</td>None
1.2
<td>no tags</td>None
<td>&lt;span&gt;one tag&lt;/span&gt;</td>None
None
<td>no tags<a href="http://korv.com/apa.tar.gz">3.4</a></td>None
<td>&lt;span&gt;one tag&lt;/span&gt;<a href="http://korv.com/apa.tar.gz">3.4</a></td>None
no
<td>no tags</td>None
<td>&lt;span&gt;one tag&lt;/span&gt;</td>None
coreutils
<td>no tags</td>None
<td>&lt;span&gt;one tag&lt;/span&gt;</td>None
6.12
<td>no tags</td>None
<td>&lt;span&gt;one tag&lt;/span&gt;</td>None
None
<td>no tags<a …
Run Code Online (Sandbox Code Playgroud)

python xml lxml

-1
推荐指数
1
解决办法
601
查看次数

如何在Python中将空字符串传递给三引号f-string?

这是一个使用带有大量子元素的三引号f-string的函数:

def pass_empty_string(param):
    from lxml import etree
    xml = etree.XML(f'''
    <root>
        <child>text</child>
        <child>{param}</child>
        ...
    </root>''')
    return xml
Run Code Online (Sandbox Code Playgroud)

获得或重视</child>param是否可以获得空元素?None''

python lxml string-literals f-string

-3
推荐指数
1
解决办法
60
查看次数

标签 统计

lxml ×5

python ×5

f-string ×1

params ×1

performance ×1

string-literals ×1

xml ×1

xslt ×1