元素树中单个标签的多行值换行

0 投票
1 回答
1189 浏览
提问于 2025-04-18 10:45

我在我的Python脚本中使用了Element Tree来生成带有我自己标签的XML文件。

我需要在XML文件中为一个标签设置多行内容。例如,

 Prj_Name = "GetComp"
 Prj_Desc = """ Level : 3
                Author : Jhon
                Date   : 12 May 13
                Details  : .......
                ..................
                .................. """
 top = Element('ProjectInfo')
 child = SubElement(top, 'Name')
 child.text = Prj_Name
 child = SubElement(top, 'Description')
 child.text = Prj_Desc
 indent(top)                        # this function will format the XML tags
 tree = ET.ElementTree(top)
 tree.write("MyXML.xml")

在这个XML中,'Description'标签包含了多行字符串。如果我们用Notepad++打开这个文件,就能看到'描述'标签的内容是这样的,

 <ProjectInfo>
     <Name>CompInfo</Name>
     <Description> Level : 3
     Author : Jhon
     Date   : 12 May 13
     Details  : .......
     ..................
     .................. </Description>
  </ProjectInfo>

但是如果我们用IE(互联网浏览器)打开这个XML文件,'Description'标签中的多行字符串就会显示成一行,像这样,

  <?xml version="1.0"?>
  -<ProjectInfo>
       <Name>GetComp</Name>
       <Description> Level : 3 Author : Jhon Date : 12    May 13 Details : ....... .................. .................. </Description>          
   </ProjectInfo>

那么我们该如何在Element Tree中为包含多行内容的元素添加换行呢?

1 个回答

2

简单来说,XML中的空格、换行、制表符这些东西不应该是你用来美化内容的工具。XML的主要作用是传递信息,它应该能够随时被重新格式化,而不会失去它的意义。

不过,你可能还是想把换行符用&#10;这种方式编码,这样无论你在记事本里怎么设置,它们都能正确传输。

撰写回答