Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >xml:将文本字符串从一个元素复制到另一个元素?

xml:将文本字符串从一个元素复制到另一个元素?
EN

Ask Ubuntu用户
提问于 2014-02-25 14:09:52
回答 2查看 1K关注 0票数 1

谢谢你的帮助。我不是程序员,但我懂基本原则。我需要在一堆xml文件中这样做。我确信xpath或xtask或使用regex的某种组合可以实现这一点,但我迷路了。有人有什么想法吗?谢谢!

以下是范围:

将“scc_title”元素复制到“scc_comments”元素。scc_comments元素通常是空的。如果不是,我仍然需要它把它附加到当前的内容中。

代码语言:javascript
代码运行次数:0
复制
<property name="scc_title" type="s">NEED TO COPY THIS TEXT</property>

<property name="scc_comments" type="s">AND PASTE IT HERE</property>
EN

回答 2

Ask Ubuntu用户

发布于 2014-02-25 15:37:57

使用pythonElementTree的另一种方法:

代码语言:javascript
代码运行次数:0
复制
from __future__ import print_function
import sys 
import xml.etree.ElementTree as ET

def main():
  if len(sys.argv) < 3:
    print("usage:", sys.argv[0], "input", "output")
    sys.exit(1)
  tree = ET.parse(sys.argv[1])
  root = tree.getroot();
  src = root.find(".//*[@name='scc_title']")
  dst = root.find(".//*[@name='scc_comments']")
  if src is not None and dst is not None:
    dst.text += src.text
    tree.write(sys.argv[2])
  else:
    if src is None:
      print("Failed to find 'scc_title' attribute", file=sys.stderr)
    if dst is None:
      print("Failed to find 'scc_comments' attribute", file=sys.stderr)
    sys.exit(1)

if __name__ == "__main__":
  main()
票数 2
EN

Ask Ubuntu用户

发布于 2014-02-25 15:32:54

Pythonic的非xml方法假设scc_title在scc_comments之前,每个标记都有自己的行,并且所有的XML文件都在同一个目录中,我没有测试这个,但这是基本思想。另外,我不确定是否有快速的GUI方式,我也不是程序员,所以可能有更好的方法来处理xml模块:

代码语言:javascript
代码运行次数:0
复制
#put this in the directory with the xml files
import re
import os

#for file_name in current directory "."
for file_name in os.listdir("."):

    if ".xml" in file_name:
        outfile = open("edited_"+file_name,"w+")

        with open(file_name,'r') as f:
            for line in f:

                if "scc_title" in line:
                    #split the string by two delimeters "<" and ">" and get the 3rd element starts at 0
                    scc_title_value = re.split('<|>',line)[2]

                if "scc_comments" in line:
                    scc_comments_value = re.split('<|>',line)[2]
                    #replace scc_comments_value with scc_title_value
                    line = line.replace(scc_comments_value,scc_title_value)

                outfile.write(line)
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/426279

复制
相关文章
在不同 webpack 版本的 Vue 项目中配置 Storybook
在之前的一篇文章中,介绍过组件化搭建工具 storybook 在 vue 项目中的安装和配置。相比于其成文的时间,vue 项目依赖的工具多有发展;并且在实际应用中,多种历史版本的项目并存的状况比比皆是,用官方提供的 npx sb init 往往会出现配置失败的情况,而较新或过旧的资料都在网上难觅 -- 所以在此特别补充一篇,记录 新、旧 两种典型配置下,storybook 可用的手动配置方法: 1. babel7 + webpack5 1.1 安装过程 diff --git a/.babelrc b/.b
江米小枣
2021/04/29
1K0
sbt 项目导入问题
有用过 sbt 开发项目的同学应该都有这样的体会,换个环境,sbt 经常会出现编译项目出错的情况,导入 IDEA 又各种报错,尤其是在 github 上找到一个 sbt 编译的项目,想 clone 下来导入 IDEA 中阅读源码,跑跑测试用例,debug 进去看看实现原理等等…
runzhliu
2020/08/05
2.5K0
PHP在同一域名下两个不同的项目做独立登录机制详解
前言 目前有这样一个需求,在一个域名下 如:http/【php教程_linux常用命令_网络运维技术】/://example.com 下,有两个项目,example.com/a/,example.com/b/,这两个项目是相互独立的程序,有不同的会员登录机制,但是我们知道,在同一个域名下,它的 session 会话是共享的,也就是你在a站登录后,b站也会出现你在a站的session信息,因为默认的 session_id 名字是 PHPSESSID,即当你第一访问a项目时,它会自动生成一个名为 PHPSESSID 的session_id,并在服务器端创建一个以session_id 命名的文件,然后发送session_id到浏览器的cookie里保存,当下一次访问时,则会携带该 cookie 信息,服务器端拿到session_id,然后再继续会话。这样就会出现会话信息共享的局面,应该怎样独立出两个不同的会话信息呢?
用户2323866
2021/07/08
1K0
MySQL数据库中有哪些不同的表格?
在 MySQL 中,数据表是一个或多个字段的集合(有组织排列),并且每个字段可以存储特定的类型数据。常见的 MySQL 表格有以下几种:
用户1289394
2023/08/22
2760
MySQL数据库中有哪些不同的表格?
SBT入门
我们用IDEA创建Spark项目的时候,默认都是使用SBT作为构建工具的,那么SBT是个啥?
码客说
2022/05/17
1.1K0
ubuntu的不同版本
ubuntu是现在最流行的Linux安装包,本文介绍了ubuntu的各种版本。 一、Ubuntu 每个ubuntu的版本都包含一个版本号(version number)和一个代码名(code name
ruanyf
2018/04/13
2.4K0
ubuntu的不同版本
一个ip, 两个域名, 两个ssl, 访问多个不同的项目
在前面一篇中说过, 入了好几个坑. 后来使用了nginx+tomcat配置的方式. 终于成功了. 因为头一次使用nginx, 不知道具体怎么操作, 于是我在操作的时候, 按照以下几个步骤执行的:
用户7798898
2020/09/27
3.9K0
一个ip, 两个域名, 两个ssl, 访问多个不同的项目
Spring框架中有哪些不同类型的事件
如果一个bean实现了ApplicationListener接口,当一个ApplicationEvent 被发布以后,bean会自动被通知。 
红目香薰
2022/11/29
3500
centos 安装sbt
1.yum install sbt 2.如果不行,则 curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/ sudo yum install sbt sbt 二进制文件发布到 Bintray,而Bintray 方便地提供了RPM资源库。你只需要将存储库添加到你的软件包管理器将检查的地方。 3.手动安装,目前官网提供的是可以直接运行的地址:http:/
hbbliyong
2018/03/06
4K0
.NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
最近我大幅度重构了我一个库的项目结构,使之使用最新的项目文件格式(基于 Microsoft.NET.Sdk)并使用 SourceYard 源码包来打包其中的一些公共代码。不过,最终生成了一个新的 dll 之后却心有余悸,不知道我是否删除或者修改了某些 API,是否可能导致我原有库的使用者出现意料之外的兼容性问题。
walterlv
2023/10/22
3630
.NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
在RPA项目中有哪些文档,如何使用这些文档
RPA项目也同样遵循同样的方式,不同的厂商和公司定义的文档类型也不太相同,多的可能十几种,少的也要几种,具体的遵循方式和使用标准取决于公司内部的使用章程。
RPA小葵
2020/03/16
1.1K0
在RPA项目中有哪些文档,如何使用这些文档
新增非空约束字段在不同版本中的演进
开发提了一个数据库变更需求,新增一字段,没有NOT NULL非空约束,但有默认值为NULL。看起来有些奇怪,因为若字段允许NULL,其默认值就是NULL,不用显示声明,可以创建一个无DEFAULT NULL的新增字段再查看desc表结构,就可以证明这点。
bisal
2019/01/29
3.1K0
RStuido Server 选择不同的 R 版本(conda 中的不同 R 版本)
自从上一次服务器重装系统之后,总感觉缺少了一些东西,安装R包很多依赖库报错,也可以解决,但总是存在,烦。
章鱼猫先生
2021/10/15
4.1K0
RStuido Server 选择不同的 R 版本(conda 中的不同 R 版本)
下载不同版本的xcode
1.连接xcode官网下载连接 注:需要苹果开发账号登录 2.搜索 xcode image.png 3.选择自己需要的xcode 版本然后下载 image.png 如果想要多个xcode 版本都
用户1437675
2019/02/22
1.3K0
下载不同版本的xcode
一个ip, 两个域名, 两个ssl, 对应多个不同的项目 之 坑
之前配置了好几天, 就想通过tomcat直接配置. 找各种资料, 都说先配置Connector, 在配置Host. 我试了很多次, 都不成功. 原因我也没有找到在哪里. 我的配置参考如下网址:
用户7798898
2020/09/27
2.2K0
一个ip, 两个域名, 两个ssl, 对应多个不同的项目  之   坑
sbt快速入门
sbt类似与maven, gradle的项目管理工具,主要用在scala,也可以用在java项目,本文介绍一下常用的使用命令和语法 安装 mac brew install sbt redhat&centos # remove old Bintray repo file sudo rm -f /etc/yum.repos.d/bintray-rpm.repo curl -L https://www.scala-sbt.org/sbt-rpm.repo > sbt-rpm.repo sudo mv sbt
十毛
2021/11/24
1.1K0
惊艳 | RStuido server选择不同的R版本(conda中的不同R版本)
自从上一次服务器重装系统之后,总感觉缺少了一些东西,安装R包很多依赖库报错,也可以解决,但总是存在,烦。
用户7010445
2021/07/12
10.5K5
惊艳 | RStuido server选择不同的R版本(conda中的不同R版本)
考古 dotnet 的不同版本
本文来考古一下 dotnet 发布过的版本,相信本文里面有很多个版本都是大家很少听过的
林德熙
2021/05/27
6260
在Java中为什么不同的返回类型不算方法重载?
方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。 比如以下 4 个 method 方法就可以称之为方法重载,如下代码所示:
磊哥
2022/01/20
3.4K0
在Java中为什么不同的返回类型不算方法重载?
编译工具sbt部署
项目构建工具是项目开发中非常重要的一个部分,充分利用好它能够极大的提高项目开发的效率。在学习SCALA的过程中,我遇到了SBT(Simple Build Tool), SBT是SCALA 平台上标准的项目构建工具,当然你要用它来构建其他语言的项目也是可以的。
陈不成i
2021/05/28
8570

相似问题

sbt无法在项目中导入两个不同版本的elasticsearch库

150

SBT:两个不同依赖项的Scala版本的交叉构建项目

13

SBT多项目构建:针对不同子项目的2种不同版本的sbt play插件

12

为什么sbt要下载与build.sbt版本不同的Scala版本?

10

如何指定rails版本?我在不同的项目中有不同的版本

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文