ColdFusion原生支持XML解析、生成与操作,核心是标签及xmlParse()、xmlSearch()、xmlTransform()等内置函数;解析后以结构化XML对象形式访问节点,支持XPath查询、XSLT转换和XSD验证,并需配合错误处理。
ColdFusion(CFML)原生支持XML数据的解析、生成与操作,无需额外库即
可完成常见任务。核心在于标签和一系列内置XML函数,如xmlParse()、xmlSearch()、xmlTransform()等,配合结构化变量(XML对象)使用,逻辑清晰且上手较快。
使用xmlParse()将XML文本或文件转为ColdFusion内部XML对象(本质是结构体+特殊元数据),后续可通过点号或数组语法访问节点:
myXml = xmlParse("- A
");
xmlContent = fileRead("data.xml"); myXml = xmlParse(xmlContent);
myXml.root(假设根元素名为root),子节点用myXml.root.item访问;若有多节点,会自动转为数组,如myXml.root.item[1].xmlText获取第一个item的文本内容xmlSearch()支持标准XPath表达式,在XML对象中精准定位节点,返回节点数组:
item元素:items = xmlSearch(myXml, "//item");
xmlSearch(myXml, "//item[@id='1']")
xmlSearch(myXml, "//item/text()") 返回文本节点数组,需调用.xmlText提取值xmlns,需在xmlSearch()中传入命名空间映射结构体)通过标签或xmlNew()+xmlElemNew()创建新XML,再用toString()输出字符串:
ok
doc = xmlNew(); root = xmlElemNew(doc, "response"); status = xmlElemNew(doc, "status"); status.xmlText = "ok"; root.appendChild(status); doc.appendChild(root);
xmlString = toString(newXml); 或 toString(doc)
ColdFusion支持XSLT样式表转换和XSD验证,适合集成场景:
result = xmlTransform(myXml, xslContent); 其中xslContent可为XSL字符串或文件路径isValidXml = isXmlValid(myXml, xsdFile); 返回布尔值,isXmlValid()在CF2016+支持,旧版本需用Java层javax.xml.validation
xmlParse()加捕获格式错误,isXml()函数可预判字符串是否为合法XML