简体   繁体   English

lxml使用xpath函数在2个数据库之间解析python中的XML?

[英]lxml parse XML in python between 2 database using xpath function how to ?

So, here's my game plan ..... 所以,这是我的游戏计划.....

xpath in python python中的xpath 在此处输入图片说明

Here's my xml 这是我的XML

So this xml is stored in a database ( ca ) , I need to extract this "data" to get all these value layer out and store them to another database ( a ) : 因此,此xml存储在数据库(ca)中,我需要提取此“数据”以获取所有这些值层并将其存储到另一个数据库(a)中:

Here's what's I came up so far.. 到目前为止,这是我的想法。

import pyodbc
from lxml import etree
from StringIO import StringIO


con_ca = pyodbc.connect(..)
con_a  = pyodbc.connect(..)

cur_ca = con_ca.cursor()
cur_c = con_c.cursor() 

cur_ca.execute("""
select id_original,data
from table
""")

rows_ca = cur_ca.fetchall()
for row in rows_ca:

     id_original = id_original

     x = str(row.data)
     root = etree.fromstring(x)  

     BValid   = etree.XPath('/Data/Response/Detail/B/Valid')  
     BPass    = etree.XPath('/Data/Response/Detail/B/Pass')  
     BDetails = etree.XPath('/Data/Response/Detail/B/Details')  
     BCode    = etree.XPath('/Data/Response/Detail/B/Code')  
     BDecisionS = etree.XPath('/Data/Response/Detail/B/Decision/Result') 
     BDecisionB = etree.XPath('/Data/Response/Detail/B/Decision/Bucket') 



con_a.execute("""
INSERT INTO table2 (id_original,BValid,BPass,BDetails,BCode,BDecisionS BDecisionB) 
VALUES(?, ?, ?,?, ?, ?, ?)
""")

.. everything work out , except after fetchall() I was able to get ('//text') : but how can I use Xpath to go into specific node to get value or text from this example ? ..一切正常,除了在fetchall()之后我能够得到('// text'):但是如何使用Xpath进入特定节点以从此示例中获取值或文本?

(b_valid_text,) = root.xpath('/Data/Response/Detail/B/Valid/text()') 

Thanks Andrean! 谢谢安德烈! Just in case someone need that answer. 以防万一有人需要这个答案。 This works!! 这有效!!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM