xml – 使用平面结构中的xpath导航到节点
发布时间:2020-12-16 23:03:54 所属栏目:百科 来源:网络整理
导读:我有一个扁平结构的xml文件.我们不控制这个xml文件的格式,只需要处理它.我已经重命名了这些字段,因为它们是高度特定于域的,并没有对问题产生任何影响. attribute name="Title"Book A/attributeattribute name="Code"1/attributeattribute name="Author" valu
我有一个扁平结构的xml文件.我们不控制这个xml文件的格式,只需要处理它.我已经重命名了这些字段,因为它们是高度特定于域的,并没有对问题产生任何影响.
<attribute name="Title">Book A</attribute> <attribute name="Code">1</attribute> <attribute name="Author"> <value>James Berry</value> <value>John Smith</value> </attribute> <attribute name="Title">Book B</attribute> <attribute name="Code">2</attribute> <attribute name="Title">Book C</attribute> <attribute name="Code">3</attribute> <attribute name="Author"> <value>James Berry</value> </attribute> 需要注意的关键事项:文件不是特别分层的.书籍由name =’Title’的属性元素的出现界定.但name =’Author’属性节点是可选的. 是否有一个简单的xpath语句,我可以用它来找到书’n’的作者?很容易识别书籍’n’的标题,但作者的价值是可选的.你不能只考虑以下作者,因为在第2册的情况下,这将给作者第3册. 我已经编写了一个状态机来解析它作为一系列元素,但我不禁想到会有一种直接获得我想要的结果的方法. 解决方法
我们希望@name’Partner’的“attribute”元素遵循@name’Title’的“attribute”元素,其值为’Book n’,而@name’Title’之间没有任何其他“attribute”元素他们(因为如果有,那么作者撰写了其他一些书).
换句话说,这意味着我们想要一个作者,其中第一个前面的标题(它“属于”的标题)是我们正在寻找的标题: //attribute[@name='Author'] [preceding-sibling::attribute[@name='Title'][1][contains(.,'Book N')]] N = C =>发现< attribute name =“作者”>< value> James Berry< / value>< / attribute> N = B =>一无所获 使用XSLT 2.0中提供的键和/或分组功能可以使这更容易(如果文件很大,也会更快). (SO代码解析器似乎认为’//’代表’评论’,但在XPath中它不是!!!叹息.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |