我正在使用SimpleXML/XPath的需要打印引文從XML文件的句子PHP腳本屬性,它具有類似的結構如下:如何從一個XML節點的父母有效
<text name="text_title">
<book name="book_title">
<chapter name="chapter_title">
<sentence name="sentence_number" id="0000">
<word attr="desired_val" id="1111" />
<word attr="undesired_val" id="2222" />
</sentence>
</chapter>
</book>
</text>
問題是我需要返回每個包含attr =「desired_val」的單詞的句子,然後返回包含其文本,書籍,章節和句子編號的引文。我目前做的第一部分與XPath查詢
//word[@$attr='desired_val']/ancestor::sentence
和第二部分的一系列基於每個ID屬性隨後XPath查詢返回的句子,例如對於文本節點:
/text/[book/chapter/sentence[@id={$id}]]/@name
(依此類推,用於其他相關節點)。我的問題是,這對大量記錄來說效率非常低,並且導致腳本超過大約十個以上的結果。任何人都可以提出一個更好的方法來做到這一點?
你能分享所需的輸出嗎?你想如何簡化你的表情?你想擺脫「書/章/句子」還是什麼? – Andersson
我想每個文字匹配的字數是相當大的。這導致文本元素的冗餘結果。你真的對多餘的結果列表感興趣嗎?如果不是,則在該文本元素中的第一個詞匹配之後停止在文本元素中的搜索就足夠了。 – ceving
'/ text/[book/chapter/sentence [word [@id = {$ id}]]]/@ name' – splash58