在Fantom中获取XML标签之间的数据

时间:2014-12-04 01:47:54

标签: xml fantom

我在Fantom的XParser类中遇到了一些问题,我试图获取XML中标记之间的数据。有一种能够获得数据类型但却无法获得实际数据的数据。谢谢!

1 个答案:

答案 0 :(得分:0)

您尝试实现的内容的示例将非常有用(例如显示您要隔离的数据的XML片段),因为问题不太明确。

默认意味着在Fantom中选择XML非常基本,并且涉及遍历直接子节点的列表。具体请参阅XElem.elems()XElem.elem(Str name)

示例用法如下:

using xml

class Example {
    Void main() {
        root := XParser("<root>
                             <thingy>
                                 <wotsit>My Text</wotsit>
                             </thingy>
                         </root>".in).parseDoc.root

        // find by traversing element lists
        wotsit := root.elems[0].elems[0]
        echo(wotsit.writeToStr)  // --> <wotsit>My Text</wotsit>

        // find by element name
        wotsit = root.elem("thingy").elem("wotsit")
        echo(wotsit.writeToStr)  // --> <wotsit>My Text</wotsit>

        // get wotsit text
        echo(wotsit.text.val)    // --> My Text
    }
}

如果您熟悉使用CSS选择器查找XML,那么您可以尝试从Alien-Factory尝试Sizzle

using xml
using afSizzle

class Example {
    Void main() {
        sizzleDoc := SizzleDoc("<root><thingy><wotsit/></thingy></root>")

        // find by CSS selector
        wotsit = sizzleDoc.select("wotsit").first
        echo(wotsit.writeToStr)  // --> <wotsit>My Text</wotsit>

        // get wotsit text
        echo(wotsit.text.val)    // --> My Text
    }
}