为什么我的xpath导致属性以错误的顺序报告?

时间:2016-03-19 16:13:29

标签: xml r xpath

以下是我的示例xml data。目前,我使用以下xpath

"//person[@id]|//plan[@selected='yes']//*[not(@max_dur)]",数据报告为

> head(z1)
        id mode dep_time trav_time arr_time  type  link           x             y   start_time end_time
1 10000062  car 03:32:01  00:00:47 03:32:48  <NA>  <NA>          <NA>          <NA>       <NA>     <NA>
2 10000062 <NA>     <NA>      <NA>     <NA> links  <NA> 335757.670587 3127766.05749   03:32:48 07:37:44
3 10000062 <NA>     <NA>      <NA>     <NA>  work 21218          <NA>          <NA>       <NA>     <NA>
4 10000062  car 07:37:44  00:08:52 07:46:36  <NA>  <NA>          <NA>          <NA>       <NA>     <NA>
5 10000062 <NA>     <NA>      <NA>     <NA> links  <NA> 336661.535923 3120921.80874   07:46:36 08:23:20
6 10000062 <NA>     <NA>      <NA>     <NA>  meal 21594          <NA>          <NA>       <NA>     <NA>

但是,如果我使用xpath "//person[@id]|//plan[@selected='yes']//*"读取所有属性,则会按正确的顺序报告属性。按顺序排列,我指的是样本数据中属性的出现顺序。最后应报告属性mode, dep_time, trav_time, and arr_time,如下所示。

head(z1)
        id  type  link             x             y start_time  max_dur end_time mode dep_time trav_time
1 10000062  home 21258 334867.243653 3126570.70778   00:00:00 03:32:01     <NA>  car 03:32:01  00:00:47
3 10000062 links  <NA>          <NA>          <NA>       <NA>     <NA> 07:37:44 <NA>     <NA>      <NA>
4 10000062  work 21218 335757.670587 3127766.05749   03:32:48     <NA>     <NA>  car 07:37:44  00:08:52
6 10000062 links  <NA>          <NA>          <NA>       <NA>     <NA> 08:23:20 <NA>     <NA>      <NA>
7 10000062  meal 21594 336661.535923 3120921.80874   07:46:36     <NA>     <NA>  car 08:23:20  00:07:53
9 10000062 links  <NA>          <NA>          <NA>       <NA>     <NA> 12:30:17 <NA>     <NA>      <NA>

本质上,我不想读取属性max_dur,但仍保留第二个表中所示的顺序。

1 个答案:

答案 0 :(得分:1)

XML中的属性顺序不被认为是重要的。 XML解析器不需要按原始顺序报告属性,因此应用程序不应该依赖于顺序。不同的XML解析器和不同的XPath处理器将为您提供不同顺序的属性。