首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么XML::Simple会让Tomboy注意到这个问题呢?

为什么XML::Simple会让Tomboy注意到这个问题呢?
EN

Stack Overflow用户
提问于 2009-12-17 21:04:59
回答 2查看 392关注 0票数 1

我试图解析一个男子气的女孩子注释,它有一个链接到它里面的另一个注释。XML的结果如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<note version="0.3" xmlns:link="http://beatniksoftware.com/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size" xmlns="http://beatniksoftware.com/tomboy">
  <title>Our IP Blocks</title>
  <text xml:space="preserve"><note-content version="0.1">Our IP Blocks

What's <link:internal>in use</link:internal>?</note-content></text>
  <last-change-date>2009-03-10T10:24:36.3730770-04:00</last-change-date>
  <last-metadata-change-date>2009-03-10T10:24:36.3730770-04:00</last-metadata-change-date>
  <create-date>2009-03-10T10:23:14.2936280-04:00</create-date>
  <cursor-position>92</cursor-position>
  <width>450</width>
  <height>289</height>
  <x>0</x>
  <y>27</y>
  <open-on-startup>False</open-on-startup>
</note>

我正在用XML::简单解析这一点,它将<link:internal />节点取出到perl中的一个单独的对象中。

编辑:结果对象(对于<text />节点,如下所示)。请注意,“链接:内部”是一个独立于“内容”的实体。

代码语言:javascript
复制
'text' => {
  'xml:space' => 'preserve',
  'note-content' => {
    'version' => '0.1',
    'link:internal' => 'in use',
    'content' => [
        'Our IP Blocks
        What\'s ',
        '?'
    ]
  }
}

这是个窃听器还是我疯了?所有验证器都表明这是有效的XML,但我以前从未见过这样嵌套在文本中的标记。

如果它是一个bug,有谁知道另一个XML模块将得到正确的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-17 23:11:27

XML::Simple不是一般XML解析的正确解析模块。它的设计有一个目的,那就是:解析XML格式的配置文件。因此,它在一定程度上简化了数据--或者说,这在很大程度上取决于您为其提供的内容。如果你关心文本和标签的顺序,你不应该使用这个模块。

票数 5
EN

Stack Overflow用户

发布于 2009-12-17 21:07:45

以上是完全有效的XML。您有一个开头元素,后面跟着一个文本节点,然后是一个开始元素。

我猜想(也许),在插入顶级节点之前,您正在解析的文本还没有正确转义。也许应该是

代码语言:javascript
复制
What's &lt;link:internal&gt;in use&lt;/link:internal&gt;

这将导致文本作为一个文本节点和内容没有被解析(如果我正确地阅读)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1924588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档