我在JS所分析的XML字符串,數據來自維基百科的API,看起來像這樣:排除子元素不起作用
<part>
<name>
Other names
</name>=
<value> * Some * other * Names ([[IUPAC]])
<ext>
<name>
ref
</name>
<attr/>
<inner>
{{SomePaper|3283|Datum=20. November 2014}}
</inner>
<close>
</ref>
</close>
</ext>
* Last name
</value>
</part>
我想使用XPath只是提取所有名稱=沒有子節點<value>
。我分析有
var doc = new DOMParser().parseFromString(xmlString,'text/xml');
,然後將XML嘗試
var result = doc.evaluate("//name[contains(text(), 'Other names')]/following-sibling::value[not(self::ext)]", doc, null, XPathResult.STRING_TYPE, null);
提取然而,輸出是一樣的東西* Some * other * Names ([[IUPAC]])ref{{SomePaper|3283|Datum=20. November 2014}}</ref> * Last name
一兩件事,這類作品是
var result = doc.evaluate("//name[contains(text(), 'Other names')]/following-sibling::value[not(self::ext)]/text.()", doc, null, XPathResult.STRING_TYPE, null);
但是,我放棄了</ext>
之後的所有內容=「*姓氏」丟失(原因解釋here我認爲)。
我在這裏做錯了什麼?
更新
這裏有一個小提琴:http://jsfiddle.net/v03xqoq4/1/
我想要的輸出:
*某些*等*名稱([IUPAC]])*姓
你想輸出什麼?請_顯示它。 –
好吧,這個位顯然是無稽之談:'following-sibling :: value [not(self :: ext)]',因爲名爲'value'的元素永遠不會滿足謂詞'self :: ext'。 –
感謝您的建議Mathias,更新了我的問題(也是一個小提琴)。 Fair point @MichaelKay,感謝您的幫助。但我仍然沒有線索如何解決我的問題:(。 – user3255061