2011-04-05 64 views
2

我有一個非常簡單的XML代碼片段,存儲在需要更新的文件中。
不幸的是,它是一個處理指令,我需要更新。我可以使用XPath獲取XML中處理指令的內容嗎?

我可以使用XPath來獲取處理指令的內容,或至少是其中的一部分嗎?

例如:

<Include> 
    <?define Version="2.0"?> 
</Include> 

我需要得到 「版本」 的值。

回答

2

該XPath表達式:

substring-before(
    substring-after(
     /Include/processing-instruction('define'), 
     'Version="' 
    ), 
    '"' 
) 

評估到字符串:​​

2

我不認爲你可以得到'2.0'。您可以在一個值中獲得'Version ='2.0'',然後手動從中提取'2.0'。它是xml規範的一部分。如果您希望獲得2.0,請確保您使用<define Version='2.0/>(使用元素而不是處理指令)。

2

here報價,

的 「屬性」,在處理 指令實際上不是 屬性 - 它們只是看起來像 他們。無意義的人將這些 種「屬性」稱爲 「僞屬性」以強調 的事實。就XPath數據模型 而言, 關於處理指令 的唯一信息是它的目標,其值和節點樹中的 位置。

這樣你就可以得到該節點本身

/Include/processing-instruction('define') 

但所有,讓你是的Version="2.0"一個Value一個節點(如字符串),您必須將自己的解析。

相關問題