我有一個XML文檔,其中有固定的結構,但深度是變化的,例如: -的xpath爲xml文檔具有變化的深度
- 它具有主節點
<project>
。- 它有可能重複多次的子節點
<namespace>
。在<namespace>
之前或之後可能會出現一些新標籤。
<project>
<newtag>
<namespace>
<namespace>
..........
</namespace>
</namespace>
</newtag>
</project>
- 後多個命名空間有我的興趣
<querySubject>
的兩個標籤和<queryItem>
我正在尋找一個文本在使用特定XPATH的queryItem標記中: -
/project/namespace/namespace/querySubject/queryItem[contains(., 'searchTerm')]/ancestor-or-self::*/name
我的XPath是工作的罰款下面給出一個特定的結構: -
<project>
<namespace>
<name locale="en">Test</name>
<lastChanged>2016-01-12T12:42:46</lastChanged>
<namespace>
<name locale="en">Database Layer</name>
<querySubject status="valid">
<name locale="en">qskxyz</name>
<queryItem>
<name locale="en">qixyz</name>
<hello>searchTerm</hello>
</queryItem>
</querySubject>
</namespace>
</namespace>
<namespace>
<name locale="en">Test</name>
<lastChanged>2016-01-12T12:42:46</lastChanged>
<namespace>
<name locale="en">Database Layer</name>
<querySubject status="valid">
<name locale="en">qsxyz</name>
<queryItem>
<name locale="en">myName</name>
<hello>...Hi there..</hello>
</queryItem>
</querySubject>
</namespace>
</namespace>
</project>
但不工作,如果有在上面點描述的變化。任何建議
編輯1.
有以我的觀察有些想念
我的實際項目標籤
<project containsDynamicContent="false" xmlns="http://www.developer.cognos.com/schemas/bmt/60/7" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.developer.cognos.com/schemas/bmt/60/7 BMTModelSpecification.xsd">
然而在開發中,我採取簡單<project></project>
這是影響和我的Xpath不工作。 任何建議我嘗試下面的XPath,但是這也不能正常工作,我不能改變我的XML標籤.. 我已經嘗試過這個XPath: -
//namespace//querySubject/queryItem[contains(.,'searchTerm')]/ancestor-or-self::*/name
*。*> 「我使用的是特定的XPATH搜索在queryItem標籤的文本」,但你的XPath表達式選擇是祖先(所有'name'節點或自我)從您選擇的'queryItem'開始。這是矛盾的。 –
是的,我正在爲文本進行插入操作,然後返回所有祖先名稱以進行跟蹤 – user2816085
[XML元素具有命名空間,我的XPATH無法正常工作]的可能重複(http://stackoverflow.com/questions/10981312/xml-element -has-namespace-my-xpath-does-not-work) – user2816085