我測試的XML結構:如何使用XPath檢索subsubchild?
<Articles>
...
<Article ID="333">
<author>Paul</author>
<title>i hate xpath </title>
<child1>bla</child1>
<child2>blabla
<subchild>
<subsubchild DEEP = "Attribute"></subsubchild> //this is my nightmare
</subchild>
</child2>
<child3>testing</child3>
</Article>
...
</Articles>
什麼XPath表達式將獲取並更新subsubchild
ATTRIB價值?如果父ID(本例中爲333)是已知的,我主要關心的是獲取和更新任何節點的子值,無論其位置有多深或多淺。
目前我使用:
$query= "//*[@ID=333]//*node()[@DEEP and @DEEP = "Attribute"]";
$outcome = $xml->xpath($query);
echo isset($outcome[0][0]) ? "found" : "unavailable";
和幾個相關的表述是,他們都折騰我的無效表達報告工作。
function XMLChangeAttribValue($ParentID, $attirbName, $attribValue, $NewValue){
$xml //Never mind, i've create this sucessfully
$query = "//*[@ID=$ParentID]//*[@$attirbName = $attribValue]";
$outcome = $xml->xpath($query);
echo isset($outcome[0][0]) ? "found" : "unavailable";
}
我不知道你的問題是什麼。 「無效的表達式報告」是否意味着XPath引擎報告錯誤?然後,請顯示它。你使用PHP嗎?然後,標記問題。 XPath不是用於更新XML文檔的正確工具,請將您的預期輸出顯示爲XML。 – 2015-01-04 15:04:22
避免個人言論 - 他們不完全幫助你的問題得到一個很好的答案。但是,處理我的意見將有所幫助。 – 2015-01-04 15:29:04
很抱歉馬蒂亞斯如果我imodest響起,我沒有故意的,我是唯一在烏爾說的XPath supprised不能使用(或者說是不正確的工具)用於更新XML。有什麼更好的?一個foreach循環?以及通過更新我的意思是我想改變DEEP(屬性)的價值爲我選擇的東西。如果你有想法,請告訴我。再一次,接受我的同情。 – 2015-01-04 15:43:02