XML 中的CDATA

2015年1月16日14:46:25 天气晴

参考网址1:http://baike.baidu.com/link?url=zcpcQAcxLEe4N-gXYiM9y4O3jQjxNJ-rL7jTciRD6Py9YUB-ql3IciSSOOceyhc-wkSxbfsPZEpZIlFSaYU9Eq

参考网址2:http://www.cnblogs.com/qiantuwuliang/archive/2010/03/29/1699361.html

CDATA(全名:character data,字符数据)

假如您在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此你不能这样写:

<message>if salary < 1000 then</message>

为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:<message>if salary &lt; 1000 then</message>

注释:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号合法的,但是把它们替换为实体引用是个好的习惯。


CDATA

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA

例如:

<script>
<![CDATA[
	function matchwo(a,b) {
		if (a < b && a < 0) then {
			return 1;
		} else {
			return 0;
		}
	}
]]>
</script>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要修改XMLCDATA区域的某个节点,可以使用Java的DOM解析器和XPath表达式。 首先,使用DOM解析器将XML文件解析为DOM树。然后,使用XPath表达式选择要修改的节点。最后,使用DOM API修改该节点的值,并将DOM树写回到XML文件。 以下是一个示例代码: ```java import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; public class ModifyCDATANode { public static void main(String[] args) throws Exception { // Load XML file DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("input.xml")); // Select CDATA node using XPath XPathFactory xPathfactory = XPathFactory.newInstance(); XPath xpath = xPathfactory.newXPath(); XPathExpression expr = xpath.compile("//myNode/text()"); Node node = (Node) expr.evaluate(doc, XPathConstants.NODE); // Modify CDATA value node.setNodeValue("new value"); // Write DOM tree back to XML file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("output.xml")); transformer.transform(source, result); } } ``` 在上面的示例,我们选择了名为“myNode”的节点,并将其值修改为“new value”。最后,我们将修改后的DOM树写回到名为“output.xml”的文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值