如何将根添加到没有单个根标签的现有 XML

2023-12-15

我有一个 XML 文件,它没有单个根标签。我想向此 XML 文件添加一个新的根标记。

下面是现有的 XML:

<A>
    <Val>123</Val>
</A>

<B>
    <Val1>456</Val1>
</B>

现在我想添加根标记“X”,因此最终的 XML 将如下所示:

<X>
  <A>
     <Val>123</Val>
  </A>

  <B>
     <Val1>456</Val1>
  </B>
</X>

我尝试使用下面的Python代码:

from xml.etree import ElementTree as ET  
root = ET.parse(Input_FilePath).getroot()   
newroot = ET.Element("X")    
newroot.insert(0, root)    
tree = ET.ElementTree(newroot)    
tree.write(Output_FilePath)

但在第一行我收到以下错误:

xml.etree.ElementTree.ParseError: junk after document element: line 4, column 4

正如@kjhughes 的评论中所指出的,XML 规范要求文档必须具有单个根元素。

from xml.etree import ElementTree as ET

node = ET.parse(Input_FilePath)
xml.etree.ElementTree.ParseError: junk after document element: line 4, column 0

您需要手动读取文件并自行添加标签:

from xml.etree import ElementTree as ET

with open(Input_FilePath) as f:
    xml_string = '<X>' + f.read() + '</X>'

node = ET.fromstring(xml_string)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将根添加到没有单个根标签的现有 XML 的相关文章

随机推荐

  • Android 中的全局计时器

    我想制作一个计时器 它将显示在我的应用程序的每个活动中 我知道如何在活动上设置计时器 下面是我的代码 public class Timer extends Activity implements OnClickListener public
  • 德摩根定律和 C++

    对于以下每个表达式 编写等效的 C 表达式 不带任何一元否定运算符 仍然允许 使用德摩根定律 P Q P Q P Q P Q For x 5 x 7 x lt 5 x gt 7 a gt 3 b gt 4 c 5 我的回答 x gt 5 x
  • Flutter:我想在下拉颤动下显示下拉列表

    我想创建看起来像我提到的下拉菜单 但我无法实现我的方面结果 我尝试使用渲染框来制作自定义下拉菜单 但它希望感觉像实际的下拉菜单 谁能帮助我得到这种类型的结果 我想要这样的结果 我当前的用户界面如下所示 这是我的代码 class AppDro
  • 在 rCharts/slidify/nvd3 中设置图表区域背景颜色

    对于以下滑动甲板 title Foo framework revealjs io2012 html5slides shower dzslides revealjs theme solarized highlighter highlight
  • 如何在 ASP.NET Identity 中使用 ASP.NET 会员数据库?

    我有几个旧版 ASP NET Web 应用程序共享 ASP NET 成员资格数据库 我想迁移到利用 NET Core 和 IdentityServer4 的微服务架构 并在新的微服务生态系统中拥有身份服务器以使用现有的 ASP NET 会员
  • Azure PowerShell:启用应用程序诊断和站点诊断

    我正在为 Azure 网站配置诊断和 IIS 日志 Azure 管理门户显示将应用程序诊断存储到 Azure 表存储的选项 单击 管理表存储 时会弹出一个对话框以提供 Azure 表详细信息 Blob 存储的站点诊断 我正在搜索 Azure
  • 创建同步 http.get()

    我试图通过 Promise 和 http get 处理登录 但我失败得很厉害 我收到以下错误 对象不支持属性或方法 toPromise 我的代码是 return this http get http localhost 5000 login
  • 强制 ANTLR 在特定文件夹中生成输出文件

    我不喜欢将 ANTLR 生成的文件放在与我的文件相同的位置 g4语法和其他版本控制文档 我想将所有生成的文件放在一个单独的嵌套文件夹中 可以通过排除 gitignore 到目前为止我尝试过的是创建一个文件夹
  • 为什么 FB.XFBML.parse() 不渲染我的插件?

    My code a href Render me a div div render me click function e e preventDefault social facebook html
  • Android Studio:用于编码 UTF-8 的不可映射字符

    将我的项目从 eclipse 导入 android studio 后 出现以下错误 Error unmappable character for encoding UTF 8 安卓工作室 0 5 8 我遇到了同样的问题 因为存在带有 win
  • AVX2 中的条件指令

    您能给出 AVX2 中可用的条件指令列表吗 到目前为止 我发现了以下内容 mm256 blendv 可供选择a and b基于掩码c 是否有条件乘法和条件加法等 另外 如果接受指示imm8计数 比如 mm256 blend 你能解释一下如何
  • 特定属性的 SequenceEqual

    我想比较两个对象列表 这些对象有四种不同的属性 我只需要比较其中的三个作为序列 只有三个 因为其中一个总是不同的 示例如下 list1 new List
  • DEI原则下Ctor参数应该注入什么?

    我试图了解哪些对象应该注入到对象中 哪些对象应该在内部创建 如果我有一些List
  • 加密文件时减少内存消耗 C#

    我的加密应用程序使用了大量内存 它根本无法处理大文件 如何优化我的代码来处理大文件 我正在使用下面的代码将文件转换为 base64 显着增加文件大小 Console Write Enter File Path docPath Console
  • XmlSerializer:“在此上下文中不能使用类型‘Type’”

    我试图找出如何使用序列化任何类Xml序列化器 不使用Xml包含属性 通常可以工作 但使用以下代码时出现异常 using System using System Collections using System Collections Gen
  • 如何将修改后的提交推送到远程 Git 存储库?

    当我对源代码进行一些处理后 我做了我通常做的事情提交 然后推送到远程存储库 但后来我注意到我忘记在源代码中组织我的导入 所以我执行修改命令来替换之前的提交 gt git commit amend 不幸的是 提交无法被推回存储库 被拒绝是这样
  • 如何从 JSONArray 解析 JSON 对象?

    我有一个非常大的 JSON 文件 格式如下 fullname name1 id 123 fullname name2 id 245 fullname name3 id 256 它看起来像一个 JSONArray 所有记录都写在同一行中 你能
  • Java并发——使用哪种技术来实现安全?

    我有一个 personId 列表 有两个 API 调用可以更新它 添加和删除 public void add String newPersonName if personNameIdMap get newPersonName null my
  • 函数调用时是否发生左值到右值的转换?

    考虑下面的代码 include
  • 如何将根添加到没有单个根标签的现有 XML

    我有一个 XML 文件 它没有单个根标签 我想向此 XML 文件添加一个新的根标记 下面是现有的 XML a a