XPath是否会返回String以外的对象

时间:2011-02-03 12:29:13

标签: xpath

我有如下地图xml。我可以使用XPath检索一个值,但我可以检索对象吗?例如,如果我说/ list / *,我想要恢复Map对象。是否可以作为对象进行检索。

<list>
    <map>
        <val name="obj_type">USER</val>
        <val name="ret_name">user</val>
        <list name="attributes">
            <map>
                <val name="obj_type">USER_ID</val>
                <val name="ret_name">userID</val>
            </map>
            <map>
                <val name="obj_type">
                    USER_UsernamePasswordCredential
                </val>
                <list name="attributes">
                    <map>
                        <val name="obj_type">UNP_Username</val>
                        <val name="ret_name">UserName</val>
                    </map>
                    <map>
                        <val name="obj_type">UNP_Password</val>
                        <val name="ret_name">Password</val>
                    </map>
                </list>
            </map>
        </list>
    </map>
</list>

3 个答案:

答案 0 :(得分:1)

来自http://www.w3.org/TR/xpath/#section-Introduction

  

评估表达式以产生一个   对象,具有以下之一   四种基本类型:

     
      
  • node-set(没有重复的无序节点集合)
  •   
  • 布尔值(true或false)
  •   
  • 数字(浮点数)
  •   
  • string(一系列UCS字符)
  •   

这四种基本类型(以及有关更新,顺序和完整性的其他类型)由标准DOM XPath API映射。来自http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult

  

定义组 XPathResultType

     

一个整数,表示这是什么类型的结果。

     

如果指定了特定的type,   然后结果将返回为   相应的类型,在需要时使用XPath type conversions   并且可能。

     

定义的常量

     
      
  • BOOLEAN_TYPE
      结果是[XPath 1.0]定义的布尔值。   文件修改没有   使布尔值无效,但可以   意味着重新评估不会   产生相同的布尔值。
  •   
  • NUMBER_TYPE
      结果是[XPath 1.0]定义的数字。   文件修改没有   使数字无效,但可能意味着   重新评估不会产生   相同的数字。
  •   
  • STRING_TYPE
      结果是[XPath 1.0]定义的字符串。   文件修改没有   使字符串无效,但可能意味着   那个字符串不再   对应当前   文档。
  •   
  • UNORDERED_NODE_SNAPSHOT_TYPE
      结果是按照定义的节点集   [XPath 1.0]将被访问为   可能不是的节点的快照列表   按特定顺序排列。文献   修改不会使   快照,但可能意味着   重新评估不会产生相同的结果   快照中的快照和节点   可能已被改变,移动或   从文件中删除。
  •   

答案 1 :(得分:0)

如果将数据绑定到对象实例,它只是一个对象。也许你的意思是一个XML元素?无论如何,它取决于您的编程语言。

答案 2 :(得分:0)

XPATH仅在DOM级别工作,并且返回节点而不是真实对象。

如果你想使用真实的数据类型,可以使用像castor这样的现有框架,对于dotnet你可以看到这个article