Xml 如何使用XPath获取两个节点之间的文本
当节点具有相同的文本时,我不知道如何获取值 下面是xml数据Xml 如何使用XPath获取两个节点之间的文本,xml,xpath,xquery,Xml,Xpath,Xquery,当节点具有相同的文本时,我不知道如何获取值 下面是xml数据 <dict> <key>VALUE1</key> <dict> <key>us</key> <string>Zubehör</string> <key>fr</key> <string>Accessories</stri
<dict>
<key>VALUE1</key>
<dict>
<key>us</key>
<string>Zubehör</string>
<key>fr</key>
<string>Accessories</string>
</dict>
<key>VALUE2</key>
<dict>
<key>us</key>
<string>test2</string>
<key>fr</key>
<string>test</string>
</dict>
</dict>
价值1
我们
祖贝尔
fr
配件
价值2
我们
测试2
fr
测试
如何通过搜索文本
附件,获取值VALUE1
?真正的清单要大得多。给出的唯一文本是附件
。有了它,我需要找到它的父对象的同级文本-->VALUE1
,这是一种可能的方法,考虑到这样的描述和小样本XML:
//dict[dict/string = 'Accessories']/key
但是,我们不能充分肯定,这将正确地处理实际的XML,因为发布的示例XML只包含目标元素
更新:
要响应更新的XML示例,可以尝试以下方法:
//dict/dict[string = 'Accessories']/preceding-sibling::key[1]
xpath定位包含关键字字符串的dict
元素,然后返回前面的第一个同级key
元素。这是一种可能的方法,考虑到这样的描述和小样本XML:
//dict[dict/string = 'Accessories']/key
但是,我们不能充分肯定,这将正确地处理实际的XML,因为发布的示例XML只包含目标元素
更新:
要响应更新的XML示例,可以尝试以下方法:
//dict/dict[string = 'Accessories']/preceding-sibling::key[1]
xpath定位包含关键字字符串的dict
元素,然后返回前面的第一个同级key
元素。这是一种可能的方法,考虑到这样的描述和小样本XML:
//dict[dict/string = 'Accessories']/key
但是,我们不能充分肯定,这将正确地处理实际的XML,因为发布的示例XML只包含目标元素
更新:
要响应更新的XML示例,可以尝试以下方法:
//dict/dict[string = 'Accessories']/preceding-sibling::key[1]
xpath定位包含关键字字符串的dict
元素,然后返回前面的第一个同级key
元素。这是一种可能的方法,考虑到这样的描述和小样本XML:
//dict[dict/string = 'Accessories']/key
但是,我们不能充分肯定,这将正确地处理实际的XML,因为发布的示例XML只包含目标元素
更新:
要响应更新的XML示例,可以尝试以下方法:
//dict/dict[string = 'Accessories']/preceding-sibling::key[1]
xpath定位包含关键字字符串的dict
元素,然后返回前面的第一个同级key
元素。我已经编辑了这个问题。发布的答案会找到所有的钥匙。编辑的问题现在包含2个键。如果它适用于这两个,那么它应该适用于所有400个键。嘿,伙计,我知道你可能很忙,但我在这最后一部分没有运气。我如何使这个查询表示按两个值过滤?现在,您的答案正确地找到了包含名为附件
的字符串的钥匙,但是如何用钥匙fr
显示包含名为附件
的字符串的钥匙呢?基本上,我在尝试过滤,但不仅仅是字符串,还通过它的键。到目前为止,我已经试过了//dict/dict[string=“associates”][key='fr']/previous sibling::key[1]/text()。但如何确保弦配件和键FR紧挨在一起呢。sry to bug uSuggestion:这里不要依赖于一个用户,一个用户可能一次都很忙,同时许多其他用户也随时准备提供帮助。您现在提出的问题不在原始问题中,因此您可以为此发布一个新问题(它不会/不应该被标记为此问题的副本),发布到目前为止的XPath,并通过如上所述的注释通知我您发布了一个新问题。这样,如果我有时间,我知道在哪里可以进一步帮助,否则许多其他用户将有机会代替我来帮助你。明白。如果我找不到的话,我会把它弄得一团糟,然后再发新问题。谢谢。@Jai请尝试以下方法://dict/dict[key[.='fr'和后面的兄弟姐妹::string[1][.='Accessories']]]/前面的兄弟姐妹::key[1]
您好,很抱歉给您带来更多麻烦。我已经编辑了这个问题。发布的答案会找到所有的钥匙。编辑的问题现在包含2个键。如果它适用于这两个,那么它应该适用于所有400个键。嘿,伙计,我知道你可能很忙,但我在这最后一部分没有运气。我如何使这个查询表示按两个值过滤?现在,您的答案正确地找到了包含名为附件
的字符串的钥匙,但是如何用钥匙fr
显示包含名为附件
的字符串的钥匙呢?基本上,我在尝试过滤,但不仅仅是字符串,还通过它的键。到目前为止,我已经试过了//dict/dict[string=“associates”][key='fr']/previous sibling::key[1]/text()。但如何确保弦配件和键FR紧挨在一起呢。sry to bug uSuggestion:这里不要依赖于一个用户,一个用户可能一次都很忙,同时许多其他用户也随时准备提供帮助。您现在提出的问题不在原始问题中,因此您可以为此发布一个新问题(它不会/不应该被标记为此问题的副本),发布到目前为止的XPath,并通过如上所述的注释通知我您发布了一个新问题。这样,如果我有时间,我知道在哪里可以进一步帮助,否则许多其他用户将有机会代替我来帮助你。明白。如果我找不到的话,我会把它弄得一团糟,然后再发新问题。谢谢。@Jai请尝试以下方法://dict/dict[key[.='fr'和后面的兄弟姐妹::string[1][.='Accessories']]]/前面的兄弟姐妹::key[1]
您好,很抱歉给您带来更多麻烦。我已经编辑了这个问题。发布的答案会找到所有的钥匙。编辑的问题现在包含2个键。如果它适用于这两个,那么它应该适用于所有400个键。嘿,伙计,我知道你可能很忙,但我在这最后一部分没有运气。我如何使这个查询表示按两个值过滤?现在你的答案是