以下是我的示例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
,但仍保留第二个表中所示的顺序。
答案 0 :(得分:1)
XML中的属性顺序不被认为是重要的。 XML解析器不需要按原始顺序报告属性,因此应用程序不应该依赖于顺序。不同的XML解析器和不同的XPath处理器将为您提供不同顺序的属性。