def writeInfoToXml(filename, config_id, obj_name):
from xml.dom.minidom import Document
'''
eg:
<modify_config config_id="{}">
<nvt_selection>
<family>Web Servers</family>
<nvt oid="{}"/>
<family>Denial of Service</family>
<nvt oid="{}"/>
<family>General</family>
<nvt oid="{}"/>
</nvt_selection>
</modify_config>
'''
# 创建dom文档
doc = Document()

# 创建根节点
modify_node = doc.createElement('modify_config')
# 修改或添加节点中元素内容
modify_node.setAttribute("config_id", config_id)

# 根节点插入dom树
doc.appendChild(modify_node)

# 每一组信息先创建节点<order>,然后插入到父节点<modify_node>下
nvtSlect = doc.createElement('nvt_selection')
modify_node.appendChild(nvtSlect)

# 从数据库查询需要扫描的项
vulnerData = nova_get_vulnerdata_from_db(obj_name)

# 依次将vulnerData中的每一组元素提取出来,创建对应节点并插入dom树
for idx, sub_data in enumerate(vulnerData):
for name, oid_list in sub_data.items():

# 创建节点<family>
family = doc.createElement('family')
# 创建<family>下的文本节点
family_text = doc.createTextNode(name)
# 将文本节点插入到<family>下
family.appendChild(family_text)
# 将<family>插入到父节点<nvtSlect>下
nvtSlect.appendChild(family)

for oid in oid_list:
# 创建nvt节点
nvt_node = doc.createElement('nvt')
# 修改或添加节点中元素内容
nvt_node.setAttribute("oid", oid)
# 将nvt节点插入到父节点nvtSlect
nvtSlect.appendChild(nvt_node)

cmd = "rm -rf {}".format(filename)
subprocess.check_output(cmd, shell=True)

# 将dom对象写入本地xml文件
with open(filename, 'w') as f:
doc.writexml(f, indent='',addindent='\t',newl='\n',encoding='UTF-8')

https://www.cnblogs.com/seyOrd/p/12687091.html

用python写xml文件的更多相关文章

  1. python写xml文件

    为了便于后续的读取处理,这里就将信息保存在xml文件中,想到得到的文件如下: 1 <?xml version="1.0" encoding="utf-8" ...

  2. PLSQL_PLSQL读和写XML文件方式(案例)

    2012-05-01 Created By BaoXinjian

  3. Python写UTF8文件,UE、记事本打开依然乱码的问题

    Python写UTF8文件,UE.记事本打开依然乱码的问题 Leave a reply 现象:使用codecs打开文件,写入UTF-8文本,正常无错误.用vim打开正常,但记事本.UE等打开乱码. 原 ...

  4. python写xml及几个问题

    python写xml的库和用法 几个问题: 1.乱码问题 设写入UTF-8编码 write函数增加encoding='utf-8' 2.空元素xml节点简写及完整写 write函数增加 short_e ...

  5. python读取xml文件报错ValueError: multi-byte encodings are not supported

    1.在使用python对xml文件进行读取时,提示ValueError: multi-byte encodings are not supported 很多贴子上说把xml的编码格式改为,就可以正常执 ...

  6. Python解析xml文件遇到的编码解析的问题

    使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...

  7. python读写xml文件

    python读取xml文件 xml文件是具有树状结构的,如果想要访问某个叶子结点,必须逐层获取其父结点,要读取某个叶子结点内容用text成员 使用前先加载xml工具包 try: import xml. ...

  8. python操作xml文件

    一.什么是xml? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. abc.xml <?xml version="1.0&q ...

  9. 【C++】【TinyXml】xml文件的读写功能使用——写xml文件

    TinyXml工具是常用比较简单的C++中xml读写的工具 需要加载 #include "TinyXml\tinyxml.h" 在TinyXML中,根据XML的各种元素来定义了一些 ...

  10. Python 读写XML文件

    Python 生成XML文件 from xml.dom import minidom # 生成XML文件方式 def generateXml(): impl = minidom.getDOMImple ...

随机推荐

  1. python学习:窗口程序

    https://www.cnblogs.com/zyg123/p/10385456.html # 导入tkinter模块 import tkinter # 创建画布需要的库 from matplotl ...

  2. IEC104

    IEC10X协议源码 https://github.com/airpig2011/IEC104 一.源码编译 下载源代码并解压 进入文件夹下test目录,对main.c进行修改 我们使用套接字来实现服 ...

  3. oracle WMSYS.WM_CONCAT 函数使用

    1.用法 WMSYS.WM_CONCAT(要连接的字段) 该函数返回来自同一个分组的指定字段的非NULL值的连接起来字符串,默认逗号连接,一般搭配分组函数使用 2.示例 select XFJ_ID,R ...

  4. Java-对象 认识对象

    1.对象同时具有属性和方法两个特性.对象的属性和方法通常被封装在一起,共同体现事物特性,两者相辅相成,不可分割

  5. (转).Net Web开发技术栈

    作者:小曾出处:http://www.cnblogs.com/1996V/p/7700087.html 有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什 ...

  6. PL/SQL Initialization error Could not initialize 问题

    问题: PL/SQL Initialization error Could not initialize 问题 参考链接: https://blog.csdn.net/luoyanjiewade/ar ...

  7. Oracle UNDOTBS表空间的查看与扩容

    1.查看UNDO表空间使用情况 select tablespace_name,       round(sum(decode(status, 'ACTIVE', bytes, 'UNEXPIRED', ...

  8. .NET Core3.1升级.NET5 oracle连接报错

    如果报以下错误 The type initializer for 'OracleInternal.ServiceObjects.OracleConnectionImpl' threw an excep ...

  9. axios请求拦截封装理解

    <p>全局处理请求.响应拦截的处理,常见处理请求动画,错误码</p> <p>import axios from 'axios'</p> <p> ...

  10. iOS开发之UIImage压缩处理

    IOS中UIImage的数据量压缩有两种方式,一种是图片尺寸不变,降低图片分辨率,代码方法为: //1.0为压缩系数,介于0~1之间.压缩系数越小,会大大降低图片清晰度 NSData *data = ...