Aestate
utils.py
Go to the documentation of this file.
1 # -*- utf-8 -*-
2 from aestate.work.xmlhandler.base import AestateNode, parse_attributes
3 from aestate.work.xmlhandler.final import XML_KEY, XML_IGNORE_NODES
4 
5 
6 def parse_children(root, elements, params):
7  """
8  获取所有子节点
9  """
10  child_list = {}
11  for i in elements:
12  node_name = i.nodeName if hasattr(i, 'nodeName') else i.node.nodeName
13  if node_name not in XML_IGNORE_NODES:
14  if node_name not in child_list.keys():
15  child_list[node_name] = []
16  child_list[node_name].append(AestateXml(root=root, node=i, params=params))
17  return child_list
18 
19 
20 class AestateXml:
21  """
22  xml对象
23  """
24 
25  def __init__(self, root, node, params: None):
26  self.root = root
27  self.node = node
28  self.params = params if params else {}
29  self.children = parse_children(node, node.childNodes if hasattr(node, 'childNodes') else node.children, params)
30  self.tags = {}
31  self.attrs = parse_attributes(node.attributes if hasattr(node, 'attributes') else node.attrs)
32  self.resultType = None
33 
34  def text(self, target_obj):
35 
36  texts = AestateNode(self.root, self.node)
37  for root_index, root_value in enumerate(self.node.childNodes):
38  t = AestateNode(self.root, root_value)
39  if root_value.nodeName in XML_KEY.keys():
40  obj = XML_KEY[root_value.nodeName](target_obj, self.params, AestateXml, self.root, root_value, XML_KEY,
41  XML_IGNORE_NODES)
42  texts = obj.apply(texts=texts)
43  elif root_value.nodeName in XML_IGNORE_NODES:
44  texts.add(node=root_value, index=root_index)
45  texts.extend(t)
46  return texts
47 
48  @staticmethod
49  def read_file(filename):
50  """
51  读取xml文件
52  """
53  from xml.dom import minidom
54  build = minidom.parse(filename)
55  root = build.documentElement
56  return AestateXml(root=root, node=root, params=None)
aestate.work.xmlhandler.utils.AestateXml.params
params
Definition: utils.py:28
aestate.work.xmlhandler.utils.AestateXml.attrs
attrs
Definition: utils.py:31
aestate.work.xmlhandler.utils.AestateXml.read_file
def read_file(filename)
Definition: utils.py:49
aestate.work.xmlhandler.utils.parse_children
def parse_children(root, elements, params)
Definition: utils.py:6
aestate.work.xmlhandler.base
Definition: base.py:1
aestate.work.xmlhandler.base.AestateNode
Definition: base.py:28
aestate.work.xmlhandler.utils.AestateXml.tags
tags
Definition: utils.py:30
aestate.work.xmlhandler.utils.AestateXml.children
children
Definition: utils.py:29
aestate.work.xmlhandler.utils.AestateXml.root
root
Definition: utils.py:26
aestate.work.xmlhandler.utils.AestateXml.resultType
resultType
Definition: utils.py:32
aestate.work.xmlhandler.utils.AestateXml.node
node
Definition: utils.py:27
aestate.work.xmlhandler.utils.AestateXml.__init__
def __init__(self, root, node, None params)
Definition: utils.py:25
aestate.work.xmlhandler.base.parse_attributes
def parse_attributes(attr)
Definition: base.py:54
aestate.work.xmlhandler.utils.AestateXml
Definition: utils.py:20
aestate.work.xmlhandler.utils.AestateXml.text
def text(self, target_obj)
Definition: utils.py:34
aestate.work.xmlhandler.final
Definition: final.py:1