【问题标题】:How to change the value of a XML tag using Perl如何使用 Perl 更改 XML 标记的值
【发布时间】:2014-05-13 17:22:43
【问题描述】:

假设我的 XML 文件是这样的:

<? xml version="1.0" encoding="iso-8859-1" ?>
  <Body>
    <RequiredTag>
      #VALUE#
    </RequiredTag>
  </Body>

如何使用 Perl 更改所需标签的值?

例如:

$XmlHandle->{XML}->{Body}->{RequiredTag} = "RequiredValue";

【问题讨论】:

    标签: xml perl


    【解决方案1】:

    使用 XML::Twig::

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use XML::Twig;
    
    XML::Twig->new( twig_handlers => 
                      { RequiredTag => sub { $_->set_text( 'RequiredValue') } },
                    pretty_print => 'indented',
                  )
             ->parsefile( 'my_file.xml')
             ->print;
    

    【讨论】:

    • 1.如果我们有多个嵌套在不同父标签下的“RequiredTag”。我们如何区分? 2.以及,修改后的xml文件如何保存?
    • 查看文档 ;--) 您可以在处理程序触发器中使用更复杂的表达式,例如 Body/RequiredTag/XML/Body/RequiredTag;而不是print,您可以使用print_to_file( 'updated.xml')
    • print_to_file(FILE) 将在我关闭 Tkx 应用程序后保存文档。我们可以动态保存文件并在我的 Tkx 应用程序仍在运行时重新加载吗?
    • 我不确定你的意思。只要您调用该方法,print_to_file 就会将文档写入磁盘。如果您需要文档的 XML,请使用 sprint,它会返回整个文档的 XML 字符串。
    • 我正在使用在 GUI 中开发的 GUI 应用程序。我选择了一个按钮,以便它将值写入 XML 文件。但是当且仅当我关闭应用程序并重新启动它时,修改才会生效。在关闭 GUI 应用程序的情况下,当我尝试检索值时不会反映更改。当我检查文档时,在文档中,“print_to_file ($filename, %options)”%options 没有描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多