python - Python ElementTree 问题
问题描述
对不起,如果我在这个问题上错了。我希望没有像这样的问题。也很抱歉,如果我违反了这个论坛的任何规则.. 这是我的第一个帖子和问题。谢谢大家的回答
我正在 Revit Dynamo 中使用 python 创建一个 XML 文件。我使用 ironPython 2.7 并加载 etree 库。
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
import sys
sys.path.append("C:\Program Files (x86)\IronPython 2.7\Lib")
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import ElementTree
import xml.etree.ElementTree as ET # Python 2.5
#INPUT
dataEnteringNode = IN
pfad=IN[0]
datei_name=IN[1]
sd_ifc_link=str(IN[2])
sd_liste=IN[3]
sd_pkt_liste=IN[4]
到目前为止,我只从 dynamo 获取列表并尝试将它们带入循环以创建 XML 文件。奇怪的是,代码时不时地工作.. 听起来很奇怪,但前一天(没有任何更改它工作,我也有 XML 文件)但更新的 XML 不工作。
我的脚本本身没有任何错误。它告诉我 XML 创建已完成。当我尝试打开 XML 文件时,我不会得到正确的结构,因为到目前为止还没有编译结束。手动编辑它并保存正在工作..
我的问题是:
- 我创建 XML 文件的循环方式有什么问题吗
- 在创建 XML 的情况下,我需要进一步了解 etree 吗?为什么它的工作如此“零星”?
我需要说的一件事:我可以在浏览器中打开正确的 XML,并且我看到了正常的结构,但是当我尝试在 notepad++ 中打开它时,它只有 1 行。标志有限制吗?
这是 XML 创建工作的时候,或者我只是修复损坏的部分 XML-File.png
sd = ET.Element("SD_Fachmodell")
ET.SubElement(sd, "TGA", name="SD").text = sd_ifc_link
sd_ifc_name = ET.SubElement(sd,"SD-Elemente")
ET.SubElement(sd_ifc_name,"Anzahl").text= str(len(sd_liste))+ " Durchbrüche"
lauf = 0
for sd_i in sd_liste:
sd_id= ET.SubElement(sd_ifc_name, str(sd_i[0]))
sd_pkte=ET.SubElement(sd_id, "Lage")
ET.SubElement(sd_pkte, "XP").text = str(sd_pkt_liste[1][lauf])
ET.SubElement(sd_pkte, "YP").text = str(sd_pkt_liste[2][lauf])
ET.SubElement(sd_pkte, "ZP").text = str(sd_pkt_liste[3][lauf])
ET.SubElement(sd_pkte, "WKS").text = str(sd_pkt_liste[0][lauf])
sd_val = ET.SubElement(sd_id,"Parameter")
ET.SubElement(sd_val, "Form").text= str(sd_i[1])
ET.SubElement(sd_val, "Art").text= str(sd_i[2])
if (sd_i[3]!=""):
ET.SubElement(sd_val, "Gewerk").text= str(sd_i[3])
ET.SubElement(sd_val, "Ebene").text= str(sd_i[4])
if (sd_i[5]!=""):
ET.SubElement(sd_val, "Breite").text= str(sd_i[5])
if (sd_i[6]!=""):
ET.SubElement(sd_val, "Höhe").text= str(sd_i[6])
ET.SubElement(sd_val, "Tiefe").text= str(sd_i[7])
if (sd_i[8]!=""):
ET.SubElement(sd_val, "Durchmesser").text= str(sd_i[8])
ET.SubElement(sd_val, "Status_Neu").text= str(sd_i[11])
ET.SubElement(sd_val, "Status_Geändert").text= str(sd_i[9])
if (sd_i[10]!=""):
ET.SubElement(sd_val, "TGA_Kommentar").text= str(sd_i[10])
lauf=lauf + 1
#Build_XML_Tree
tree = ET.ElementTree(sd)
tree.write(open(pfad + '\\'+ datei_name + '.xml', "w"), encoding='UTF-8', xml_declaration=True, method='xml')
#OUTPUT
OUT = [pfad]
解决方案
推荐阅读
- javascript - 加载后反应焦点div
- javascript - 使用书签更改临时变量的值
- python - DataFrame 和 Python 找不到 CSV 文件的列名
- telegram-bot - What are Telegram bot rate limits aggregation period
- python - Detect click on Label - PyQT5
- kotlin - Ktor Android 客户端 Websocket 连接失败
- list - 从类元素创建一个列表
- javascript - 为什么表格没有出现?
- python - Discord bot python:如何获取角色的颜色 Hex 或 RGB 格式
- google-cloud-platform - 使用谷歌云平台日志分析不同条件下的数值