我在我的ruby on rails app中使用xml-mapping。
我需要加载xml文件并使用xml-mapping
将其解析为对象xml示例在这里
<?xml version="1.0" encoding="UTF-8"?>
<elements type="array">
<element></element>
<element></element>
...
</elements>
这是红宝石代码
require 'xml/mapping'
class Macro; end
class Elements
include XML::Mapping
array_node :elements, "elements","element" :class => Element
end
class Element
include XML::Mapping
text_node :name, "name"
text_node :description, "description"
end
问题是当我使用Elements.load_from_file("my.xml")
它不加载数组时,但是如果我将根节点添加到xml它就可以工作。
这个xml工作
<?xml version="1.0" encoding="UTF-8"?>
<mynode>
<elements type="array">
<element></element>
<element></element>
...
</elements>
<mynode>
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
有效XML仅包含一个根节点。至少Java中的SAX解析器定义为有效,因此似乎已达成一致。
答案 1 :(得分:0)
(我是xml映射作者)
XPath表达式始终相对于XML树中的映射类的基节点,它是“Elements”类的“elements”元素。因此,您不得在Elements的节点中的XPath表达式中包含该名称。只需将其保留,代码就可以运行:
class Elements
include XML::Mapping
array_node :elements, "element", :class => Element
end