你有多个标签,xml标签有CDATA部分吗?

时间:2012-05-03 21:37:29

标签: 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的标签内使用其他标签吗?我没有找到任何在线样本。

3 个答案:

答案 0 :(得分:2)

首先,您似乎不清楚“标签”是什么。鉴于此:

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

有两个标记:开始标记<a>和结束标记</a>。 CDATA部分不在“标签内”,它位于两个标签之间。

所以,当你说“整个标签被视为CDATA”时,我认为你的意思是“标签之间的整个内容被视为CDATA”;是的,这是正确的。当你说'你可以在有CDATA的标签内使用其他标签吗?'我认为你的意思是'你可以在CDATA部分内有标签吗?',答案是否定的:使用CDATA部分的唯一要点是防止部分内的任何尖括号被识别为标记。

答案 1 :(得分:1)

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

在您的情况下,<<port>url= https://localhost:8080<port>不会被视为包含XML的标记,而是纯文本。

如果您想要一个包含CDATA部分的端口元素,您应该将您的行修改为

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

答案 2 :(得分:0)

如果您查看definition of a CDATA section开头<![CDATA[和结束]]>标记之间的所有内容都被视为文字输入,则根本不对信息进行处理。

现在,如果您在CDATA部分中形成有效的XML,一旦提取它,您就可以单独处理该文档。