有什麼辦法從XML文件中檢索評論嗎?有什麼辦法從XML文件中檢索評論嗎?
我有一個XML文件,其中有註釋,我必須建立一個基於這個文件中每個節點的用戶界面和相關的註釋。
我似乎無法找到獲取這些評論的方法。我能夠使用simpleXML獲得其中的一些,但它對於根節點不起作用,並且表現得很奇怪......一些評論被放在他們自己的節點中,另外一些則被留作孩子,而所有評論被放在同一個節點中......不確定這是否有意義:)關鍵是simpleXML打破了評論的結構,並且不符合我的需求。
有什麼辦法從XML文件中檢索評論嗎?有什麼辦法從XML文件中檢索評論嗎?
我有一個XML文件,其中有註釋,我必須建立一個基於這個文件中每個節點的用戶界面和相關的註釋。
我似乎無法找到獲取這些評論的方法。我能夠使用simpleXML獲得其中的一些,但它對於根節點不起作用,並且表現得很奇怪......一些評論被放在他們自己的節點中,另外一些則被留作孩子,而所有評論被放在同一個節點中......不確定這是否有意義:)關鍵是simpleXML打破了評論的結構,並且不符合我的需求。
您可以使用XMLReader讀取所有節點並提取註釋。我已經包含了一些示例代碼來幫助您開始,因爲它只是取出節點,並沒有考慮到,其中評論在任何xml節點的內部,下方或上方。
$comments = '';
$xml =<<<EOX
<xml>
<!--data here -->
<data>
<!-- more here -->
<more />
</data>
</xml>
EOX;
$reader = new XMLReader();
$reader->XML($xml);
while ($reader->read()) {
if ($reader->nodeType == XMLReader::COMMENT) {
$comments .= "\n".$reader->value;
}
}
$reader->close();
echo "all comments below:\n-------------------".$comments
的預期結果是:
all comments below:
-------------------
data here
more here
所以評論(不是<!-- -->
)剛值將被採取,以及空白。
simpleXml適用於快速獲取某些東西,但它有一定的侷限性。改用DOM解析器。或者在這種情況下,可能是基於事件的(SAX或XmlReader)。
我使用的類從http://www.php.net/manual/en/function.xml-parse.php#86312它似乎看到評論節點。我會盡量玩DOM解析器 – Quamis 2009-02-05 10:53:39
如果您使用XPath,這很簡單。 comment()
函數匹配註釋。所以模式
//comment()
查找文檔中的所有註釋。
在XSLT,對於其中註釋後面你改造的元素,例如一般模式:
<!-- This is the comment -->
<element>...
你會使用一個模板:
<xsl:template match="*[.::preceding-sibling()/comment()]">
<xsl:variable name="comment" select=".::preceding-sibling()/comment()"/>
<!-- xsl:value-of $comment will now give you the text of the comment -->
...
thx,我會給它一個嘗試tommorow,但它看起來很簡單:) – Quamis 2009-02-08 12:42:50