nodeName,nodeValue未知 xml 入库方案 The ElementTree iterparse Function
import xml.etree.ElementTree as ET
from lxml.html import *
from xmljson import badgerfish as bf
from pymongo import * xmlDict = {}
def RecursionDict(dict_a):
if isinstance(dict_a,dict):
for x in range(0,len(dict_a)):
temp_key = dict_a.keys()[x]
temp_value = dict_a[temp_key]
if isinstance(temp_value,dict) and len(temp_value)== 1 :
w = temp_value[temp_value.keys()[0]]
if not isinstance(w,dict):
xmlDict[temp_key] = w
RecursionDict(temp_value) tree = ET.parse('listorderitems1493779131.xml')
root = tree.getroot()
xmlstr = ET.tostring(root, "us-ascii", "xml")
print xmlstr res = bf.data(fromstring(xmlstr))
print res
RecursionDict(res)
print xmlDict
client = MongoClient()
db = client.apixmldict
collection = db.col
collection.save(xmlDict)
wuser@ubuntu:~/apiamzpy$ cat wxmljsondict.py
import xml.etree.ElementTree as ET
from lxml.html import *
from xmljson import badgerfish as bf
from pymongo import * xmlDict = {}
def RecursionDict(dict_a):
if isinstance(dict_a,dict):
for x in range(,len(dict_a)):
temp_key = dict_a.keys()[x]
temp_value = dict_a[temp_key]
if isinstance(temp_value,dict) and len(temp_value)== :
w = temp_value[temp_value.keys()[]]
if not isinstance(w,dict):
xmlDict[temp_key] = w
RecursionDict(temp_value) tree = ET.parse('listorderitems1493779131.xml')
root = tree.getroot()
xmlstr = ET.tostring(root, "us-ascii", "xml")
print xmlstr res = bf.data(fromstring(xmlstr))
print res
RecursionDict(res)
print xmlDict
client = MongoClient()
db = client.apixmldict
collection = db.col
collection.save(xmlDict)
wuser@ubuntu:~/apiamzpy$ cat listorderitems1493779131.xml
<?xml version="1.0"?>
<ListOrderItemsResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01">
<ListOrderItemsResult>
<AmazonOrderId>--</AmazonOrderId>
<OrderItems>
<OrderItem>
<ASIN>B01M123ABC</ASIN>
<SellerSKU>ABCEHM054AWUS-USAS2</SellerSKU>
<OrderItemId></OrderItemId>
<Title>wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags</Title>
<QuantityOrdered></QuantityOrdered>
<QuantityShipped></QuantityShipped>
<PromotionIds/>
</OrderItem>
</OrderItems>
</ListOrderItemsResult>
<ResponseMetadata>
<RequestId>8cc6b5dc-f79e-4da4-b914-9f14388c0bbf</RequestId>
</ResponseMetadata>
</ListOrderItemsResponse>
wuser@ubuntu:~/apiamzpy$
> db.col.save({'w':})
WriteResult({ "nInserted" : })
> db.col.find().pretty()
{ "_id" : ObjectId("590b35877511f2683d345653"), "w" : }
> db.col.find().pretty()
{ "_id" : ObjectId("590b35877511f2683d345653"), "w" : }
{
"_id" : ObjectId("590b35ab1d41c832e2b6048b"),
"exception" : "<ns0:ListOrderItemsResponse xmlns:ns0=\"https://mws.amazonservices.com/Orders/2013-09-01\">\n <ns0:ListOrderItemsResult>\n <ns0:AmazonOrderId>123-1239963-8862642</ns0:AmazonOrderId>\n <ns0:OrderItems>\n <ns0:OrderItem>\n <ns0:ASIN>B01M123ABC</ns0:ASIN>\n <ns0:SellerSKU>ABCEHM054AWUS-USAS2</ns0:SellerSKU>\n <ns0:OrderItemId>12325810562154</ns0:OrderItemId>\n <ns0:Title>wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags</ns0:Title>\n <ns0:QuantityOrdered>1</ns0:QuantityOrdered>\n <ns0:QuantityShipped>0</ns0:QuantityShipped>\n <ns0:PromotionIds />\n </ns0:OrderItem>\n </ns0:OrderItems>\n </ns0:ListOrderItemsResult>\n <ns0:ResponseMetadata>\n <ns0:RequestId>8cc6b5dc-f79e-4da4-b914-9f14388c0bbf</ns0:RequestId>\n </ns0:ResponseMetadata>\n</ns0:ListOrderItemsResponse>"
}
{
"_id" : ObjectId("590b35ab1d41c832e2b6048c"),
"asin" : "B01M123ABC",
"sellersku" : "ABCEHM054AWUS-USAS2",
"title" : "wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags",
"amazonorderid" : "123-1239963-8862642",
"quantityshipped" : ,
"requestid" : "8cc6b5dc-f79e-4da4-b914-9f14388c0bbf",
"quantityordered" : ,
"orderitemid" : NumberLong("")
}
> db.col.find().pretty()
{ "_id" : ObjectId("590b35877511f2683d345653"), "w" : }
{
"_id" : ObjectId("590b35ab1d41c832e2b6048b"),
"exception" : "<ns0:ListOrderItemsResponse xmlns:ns0=\"https://mws.amazonservices.com/Orders/2013-09-01\">\n <ns0:ListOrderItemsResult>\n <ns0:AmazonOrderId>123-1239963-8862642</ns0:AmazonOrderId>\n <ns0:OrderItems>\n <ns0:OrderItem>\n <ns0:ASIN>B01M123ABC</ns0:ASIN>\n <ns0:SellerSKU>ABCEHM054AWUS-USAS2</ns0:SellerSKU>\n <ns0:OrderItemId>12325810562154</ns0:OrderItemId>\n <ns0:Title>wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags</ns0:Title>\n <ns0:QuantityOrdered>1</ns0:QuantityOrdered>\n <ns0:QuantityShipped>0</ns0:QuantityShipped>\n <ns0:PromotionIds />\n </ns0:OrderItem>\n </ns0:OrderItems>\n </ns0:ListOrderItemsResult>\n <ns0:ResponseMetadata>\n <ns0:RequestId>8cc6b5dc-f79e-4da4-b914-9f14388c0bbf</ns0:RequestId>\n </ns0:ResponseMetadata>\n</ns0:ListOrderItemsResponse>"
}
{
"_id" : ObjectId("590b35ab1d41c832e2b6048c"),
"asin" : "B01M123ABC",
"sellersku" : "ABCEHM054AWUS-USAS2",
"title" : "wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags",
"amazonorderid" : "123-1239963-8862642",
"quantityshipped" : ,
"requestid" : "8cc6b5dc-f79e-4da4-b914-9f14388c0bbf",
"quantityordered" : ,
"orderitemid" : NumberLong("")
}
{
"_id" : ObjectId("590b35cd1d41c832ec3d2c03"),
"asin" : "B01M123ABC",
"sellersku" : "ABCEHM054AWUS-USAS2",
"title" : "wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags",
"amazonorderid" : "123-1239963-8862642",
"quantityshipped" : ,
"requestid" : "8cc6b5dc-f79e-4da4-b914-9f14388c0bbf",
"quantityordered" : ,
"orderitemid" : NumberLong("")
}
> db.col.find().pretty()
{ "_id" : ObjectId("590b35877511f2683d345653"), "w" : }
{
"_id" : ObjectId("590b35ab1d41c832e2b6048b"),
"exception" : "<ns0:ListOrderItemsResponse xmlns:ns0=\"https://mws.amazonservices.com/Orders/2013-09-01\">\n <ns0:ListOrderItemsResult>\n <ns0:AmazonOrderId>123-1239963-8862642</ns0:AmazonOrderId>\n <ns0:OrderItems>\n <ns0:OrderItem>\n <ns0:ASIN>B01M123ABC</ns0:ASIN>\n <ns0:SellerSKU>ABCEHM054AWUS-USAS2</ns0:SellerSKU>\n <ns0:OrderItemId>12325810562154</ns0:OrderItemId>\n <ns0:Title>wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags</ns0:Title>\n <ns0:QuantityOrdered>1</ns0:QuantityOrdered>\n <ns0:QuantityShipped>0</ns0:QuantityShipped>\n <ns0:PromotionIds />\n </ns0:OrderItem>\n </ns0:OrderItems>\n </ns0:ListOrderItemsResult>\n <ns0:ResponseMetadata>\n <ns0:RequestId>8cc6b5dc-f79e-4da4-b914-9f14388c0bbf</ns0:RequestId>\n </ns0:ResponseMetadata>\n</ns0:ListOrderItemsResponse>"
}
{
"_id" : ObjectId("590b35ab1d41c832e2b6048c"),
"asin" : "B01M123ABC",
"sellersku" : "ABCEHM054AWUS-USAS2",
"title" : "wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags",
"amazonorderid" : "123-1239963-8862642",
"quantityshipped" : ,
"requestid" : "8cc6b5dc-f79e-4da4-b914-9f14388c0bbf",
"quantityordered" : ,
"orderitemid" : NumberLong("")
}
{
"_id" : ObjectId("590b35cd1d41c832ec3d2c03"),
"asin" : "B01M123ABC",
"sellersku" : "ABCEHM054AWUS-USAS2",
"title" : "wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags",
"amazonorderid" : "123-1239963-8862642",
"quantityshipped" : ,
"requestid" : "8cc6b5dc-f79e-4da4-b914-9f14388c0bbf",
"quantityordered" : ,
"orderitemid" : NumberLong("")
}
{
"_id" : ObjectId("590b39841d41c833325a4dcd"),
"asin" : "B01M123ABC",
"sellersku" : "ABCEHM054AWUS-USAS2",
"title" : "wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags",
"amazonorderid" : "123-1239963-8862642",
"quantityshipped" : ,
"requestid" : "8cc6b5dc-f79e-4da4-b914-9f14388c0bbf",
"quantityordered" : ,
"orderitemid" : NumberLong("")
}
{
"_id" : ObjectId("590b3cc51d41c83347fbfcb1"),
"asin" : "B01M123ABC",
"sellersku" : "ABCEHM054AWUS-USAS2",
"title" : "wwwTEST_DATA_Holife Vacuum Sealer, Silver Compact Food Saver Wet/Dry Vacuum Sealing System with Food Grade Starter Bags",
"amazonorderid" : "123-1239963-8862642",
"quantityshipped" : ,
"requestid" : "8cc6b5dc-f79e-4da4-b914-9f14388c0bbf",
"quantityordered" : ,
"orderitemid" : NumberLong("")
}
> db.col.find().count()
> db.col.find().count()
>



---->更高效的
nodeName,nodeValue未知 xml 入库方案
xml--->?--->database
json只是过程,不是目的;
想到一种算法是将xml转为string,然后借助正则辅助去处理该string,目测可行但是觉得似乎其不高效;;;;
也许xpath的原理就是上述算法??
SAX解析多层嵌套XML - donglindonglin的博客 - 博客频道 - CSDN.NET
http://blog.csdn.net/donglindonglin/article/details/51996926


wuser@ubuntu:~/apiamzpy$ python wl.py
<listiterator object at 0x7f6c99c20ed0>
[, , 'w1']
Traceback (most recent call last):
File "wl.py", line , in <module>
if t0.next():
StopIteration
wuser@ubuntu:~/apiamzpy$ vim wl.py l0 = [,,'w1']
t0 = l0.__iter__()
print t0
print list(t0)
if t0.next():
t0.next()
~
问题:
xml取出所有的nodeName、nodeValue对
0-不高效的方案:0-0-php / python 将xml处理为string;0-1-利用正则处理字符串。
w
http://effbot.org/zone/element-iterparse.htm
nodeName,nodeValue未知 xml 入库方案 The ElementTree iterparse Function的更多相关文章
- python中用ElementTree.iterparse()读取xml文件中的多层节点
我在使用Python解析比较大型的xml文件时,为了提高效率,决定使用iterparse()方法,但是发现根据网上的例子:每次if event == 'end':之后elem.clear()或者是每次 ...
- HTML DOM的nodeName,nodeValue,nodeType介绍
将HTML DOM中几个常用的属性做下介绍,工作中作为参考. nodeName 属性可依据节点的类型返回其名称. 元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文 ...
- HTML DOM 节点介绍(nodeName,nodeValue,nodeType)
对于初学者来说,HTML DOM 里面的 nodeName.nodeValue 以及 nodeType 三个属性的作用和取值不是很清楚.下面整理的信息包含有关于节点的详细信息,供参考. 节点信息 每个 ...
- HTML DOM nodeName nodeValue
在javascript在,我们得title在标签和文本,它们通常要求这样做 var obj =document.getElementsById("id1"); obj.nodeNa ...
- nodeName,nodeValue,nodeType,typeof 的区别
nodeName 属性含有某个节点的名称. 元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节 ...
- python解析xml文件时使用ElementTree和cElementTree的不同点;iter
在python中,解析xml文件时,会选用ElementTree或者cElementTree,那么两者有什么不同呢? 1.cElementTree速度上要比ElementTree快,比较cElemen ...
- XML解析方案
在iOS中,解析XML的手段有很多 苹果原生 NSXMLParser:SAX方式解析,使用简单 第三方框架 libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析 GDa ...
- 多级xml解析方案
package com.people.xmlToSql; import java.io.File; import java.io.IOException; import java.io.StringW ...
- mybatis的Mapper.xml文件SQL语句BadSqlGrammarException之FUNCTION错误系列
想必各位在开发过程中一定使用过:统计的功能,用到了很多SQL的函数,于是就直接写在Mapper文件中了: 比如: member_num,MAX(ID) AS newestLoanID,MIN (ID) ...
随机推荐
- tensorflow学习笔记二----------变量
tensorflow里面的变量表示,需要使用特定的语法进行.如果想构造一个行(列)向量,需要调用Variable函数进行.对两个变量进行操作,也要调用相应的函数. import tensorflow ...
- css是干什么的
css这些长篇累牍的参数,其实就是这些所谓的css编程者每天要干的事情了,他们把这些参数熟记于心,就像c++程序员,把这些函数库熟记于心一样,都是编程. css定制了每一个单独的组件,这些组件要么是相 ...
- Node+Express+MySql实现简单增删改查和登录
var express = require('express'); var mysql = require('mysql'); var app = express(); var bodyParser ...
- PHP 中一个 False 引发的问题,差点让公司损失一百万
PHP 中一个 False 引发的问题,差点让公司损失一百万 一.场景描述 上周我一个在金融公司的同学,他在线上写一个 Bug,差点造成公司损失百万.幸好他及时发现了这个问题并修复了.这是一个由 PH ...
- ThinkPHP视图css和js加上版本号防止缓存
前台模块中,我的所有控制器都继承BaseController,虽然ThinkPHP中我们提供了两个配置项 'TMPL_CACHE_ON' => false,// 禁止模板编译缓存 'HTML_C ...
- Asp.net MVC 发布到IIS6
1.发布网站 2.打开IIS,添加网站 3.修改程序池,改为.net 4.0 4.添加虚拟目录(及添加aspnet_isapi.dll文件,该文件目录在“C:\Windows\Microsoft.NE ...
- C++ delete仍可访问的问题
C++ delete和置为NULL 先上一段代码: class Object { public: explicit Object(int num) : m_num(num){} void functi ...
- Docker 启动与停止容器
启动已运行过的容器 docker start 容器名称|容器id 如: docker start mycentos 启动所有运行过的容器(注意:反单引号` `), docker ps -a -q 是查 ...
- 005-(已测试成功的方案)kickstart模式实现批量安装centos7.x系统
1.1 安装系统的方法 l 光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l U盘:ISO镜像刻录到U盘==& ...
- 解决vuex数据页面刷新后初始化问题
在vue项目的开发中经常会用到vuex来进行数据的存储,然而在开发过程中会出现刷新后页面的vuex的state数据初始化问题!下面是我用过的解决方法 利用storage缓存来实现vuex数据的刷新问题 ...