2012-05-03 68 views
0

我有一個XML文件,它看起來像這樣:你可以有多個具有CDATA部分的xml標籤的標籤嗎?

<bookstore> 

<book category="COOKING"> 
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
    <![CDATA[<<port>url= https://localhost:8080<port>]]> 
</book> 

我看到,當這個被處理,整個標籤被認爲是CDATA。你可以使用CDATA標籤內的其他標籤嗎?我沒有找到任何這樣做的在線樣本。

+0

這將擊敗'CDATA'的全部點。 – skaffman

回答

2

首先,你似乎還不清楚是什麼「標籤」是。鑑於這種:

<a><![CDATA[xyz]]></a> 

有兩個標籤:一個開始標記<a>和結束標記</a>。 CDATA部分不是「在」標籤中,而是在兩個標籤之間。所以當你說'整個標籤被認爲是CDATA'時,我認爲你的意思是'標籤之間的全部內容被認爲是CDATA'。是的,這是正確的。當你說'你可以在有CDATA的標籤內使用其他標籤嗎?'我認爲你的意思是'你可以在CDATA部分內部添加標籤嗎?',答案是否定的:使用CDATA部分的唯一目的是防止該部分內的任何尖括號被識別爲標記。

+0

尖括號和&符號。 – Quentin

+0

我想我想重述一下我的問題。我想知道我的上面的例子是否有效的XML。書標籤還有CDATA部分的標題,作者,年份和價格。這有效嗎? – user1373651

+0

是的,你的例子是格式良好的。但是你可以通過將它扔到XML解析器來查看它是否報告任何錯誤,從而更容易和可靠地找到它。 –

1

解析器忽略CDATA部分內的所有內容。

在你的情況下,<<port>url= https://localhost:8080<port>不會被認爲是包含XML的標籤,而是純文本。

如果你想有一個包含CDATA部分,您應該修改您的線路端口元素

<port><![CDATA[url= https://localhost:8080]]></port>

0

如果你看一下definition of a CDATA section開幕<![CDATA[]]>標籤被認爲是文字輸入和任何處理之間的所有內容上的信息,在全部完成。

現在,如果您在CDATA部分中形成有效的XML,那麼一旦您解壓縮,您就可以分別處理該文檔。

+0

Mitchel,我的問題是,在XML中如何處理與CDATA節一起出現的數據/標記,而不處理CDATA節本身。在我的例子中,標籤,作者,標題等是如何處理的? – user1373651