问题标签 [xml-twig]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3402 浏览

xml - 如何使用 Perl 的 XML::Twig 将子元素添加到 XML?

我有以下 XML 文件:

现在,我想将孩子添加<CIFS_SERVICE NETBIOSNAME="serv2"/><SERVER HOSTNAME="serv2">. 如何使用XML::Twig执行此操作?

0 投票
2 回答
1688 浏览

xml - 如何使用 Perl 的 XML::Twig 向子元素添加属性?

我有一个这样的 XML 字符串:

我想要的最终输出是:

我的树枝$t<DATA>。现在我想为第二个添加一个属性<CHILD_DATA />。属性是ATVAL="value2"。我尝试了以下方法:

这没有用。这段代码有什么问题?还有另一种方法可以做到这一点吗?

0 投票
1 回答
4836 浏览

xml - 如何使用 XML::Twig 获取内容?

我的目标是start_tag_handler(见下文)在找到/标记时获取apps/title内容(见下面的示例 XML)。appstitle

并 在找到/标记时end_tag_handler获取apps/logs内容。appslogs

但相反,此代码返回 null 并退出。

这是用于解析的 Perl 代码(使用XML::Twig)###:

这是 doc.xml###:

这是控制台中的输出###:

0 投票
1 回答
254 浏览

xml - 为什么 XML::Twig 不调用我的 end_tag_handler?

我尝试为每个标签调用子例程,但end_tag_handlers从未调用过。
我的目标是这个序列:

---sequence---调用
时。打电话 时。打电话 时。打电话 时。打电话 时。打电话 时。打电话 时。打电话 时。→它没有被调用。<auto>\&loading
<apps><title>\&kicks
<apps><logs>\&bye
<apps>\&app
<apps><title>\&kicks
<apps><logs>\&bye
<apps>\&app
</auto>\&finish

温度.pl:

文档.xml:

输出:

我想在这里更多。

0 投票
2 回答
1288 浏览

xml - 如何使用 XML::Twig 从 URL 中提取一些 XML 数据?

我想从某个将从 URL 中检索的 XML 中获取一个特定的字符串,例如 <received>123</received> 中的 123。

我已经编写了一个代码,但遇到了一条错误消息:

尝试在 /usr/share/perl5/XML/Twig.pm 第 392 行添加参考。

我该如何解决?

编码:

0 投票
1 回答
3970 浏览

xml - 使用 Perl 修改 XML 文件

我有一个带有某种格式的 XML 文件。我希望以某种我想要的方式修改数据。我觉得XML::Twig是这样做的方法。

我想知道是否有其他更好的选择?

0 投票
2 回答
1435 浏览

perl - 在 Win32 Perl 中使用 XML::Twig 的字符串损坏和不可打印字符

这是一个非常奇怪的问题。我几乎花了一整天的时间将它缩减为一个可以充分展示问题的小型可执行脚本。

问题摘要:我正在使用XML::Twig从 XML 文件中提取数据片段,然后将该数据片段粘贴到另一条数据的中间,我们称之为父数据。当我开始时,父数据的开头有这个奇怪的不可打印字符。它是供应商提供的数据,所以我无法控制它。我的问题是,在我将数据片段粘贴到父数据的中间之后,最终产品的开头除了最初开始的字符之外还有一个新的不可打印字符。这个新的不可打印字符既不在父数据中,也不在子数据片段中。我不知道它来自哪里,也不知道它是如何进入我的数据的。

我怀疑这是一个 XML::Twig 错误,因为在 while 循环中从文件句柄中读取一行时发生字符串损坏,但是当我删除 XML::Twig 代码时,我没有成功重新创建我的问题我的脚本,所以我不得不把它留在里面。

这是我第一次尝试处理字符串中的不可打印字符。我是否需要做一些特别的事情而不是像对待普通字符串或其他东西一样对待它们?

我在 Windows XP 上使用 ActiveState Perl 5.10.1 和 XML::Twig 3.32(最新)和 Eclipse 3.5.1 IDE。

这是一个演示问题的脚本:

当我运行这个脚本时,我得到以下输出:

您可以在 MODIFIED 中的 M 正下方看到添加到数据前面的额外字符。

0 投票
2 回答
503 浏览

xml - 为什么 XML::Twig 两次输出提取的字符串?

为什么我在输出中得到我的字符串两次?

0 投票
3 回答
3362 浏览

perl - How can I pass arguments and return values with XML::Twig's handler?

my question is: how to pass some arguments to XML:Twig's handler, and how to return the result from the handler.

Here is my code, which hardcoded:

<counter name = "music", report type = "month", stringSet index = 4>.

How to implement this by using arguments $counter_name, $type, $id? and how to return the result of string_list? Thanks (sorry I did not post the xml file here because I have some trouble to do that. anything within < and > are ignored).

0 投票
1 回答
735 浏览

perl - 在 XML:TWIG 中,一旦找到感兴趣的元素,如何停止解析

我只想解析一个感兴趣的 xml 元素(例如,见下文:名称等于数学的类元素),并且我想在解析达到此条件的第一个元素时停止。(由于只有一个类名为 math,一旦找到元素就没有必要继续了)。

但是,如果我按如下方式实现,则代码在找到我感兴趣的元素后会继续读取整个文件(xml 文件很长,因此需要很长时间)。我的问题是,一旦解析了 name = math 的第一个类元素,如何停止它?

my $twig = new XML::Twig(TwigRoots => {"class[\@name='math']" => \&class}); $twig->parsefile( shift @ARGV );

此外,我还想在解析后从 xml 文件中(不仅从内存中)删除该类,以便下次解析具有其他名称的类时,不会解析该类元素。有可能这样做吗?