本人初学,请大家指点!
原xml文件:
- XML code
<?xml version="1.0" encoding="utf-8"?> <root Name="root"> <child Name="child1" Expression="1000<1>1001<11>/> <child Name="child2" Expression="1000<2>1001<22>/> </root>
显示页面,显示节点child1的属性expression的一部分值:
- HTML code
<cfset ThisPath="#getDirectoryFromPath(getTemplatePath())#"><cffile action="read" charset="utf-8" file="#ThisPath#1.xml" variable="myXMLFile"><cfset XMLDoc=XMLParse(myXMLFile)><cfset item=XMLDoc.XMLroot.XMLChildren[1]> <form action="edittest.cfm" method="post" > <input name="sExpression" value="<cfoutput>#item.XMLAttributes["Expression"]#</cfoutput>"/> <input type="submit" name="Submit" value="修改" /> </form>
显示程序运行结果如预期:1000<1>1001<11> (xml转义符:"<"对应于< ">"对应于>)
现需要在显示结果上面修改节点child1的属性expression的一部分值,如将1000后面的1改为3,即目标xml的节点内容为: <child Name="child1" Expression="1000<3>1001<11>/>
edittest.cfm:
- HTML code
<cfset ThisPath="#getDirectoryFromPath(getTemplatePath())#"><cffile action="read" charset="utf-8" file="#ThisPath#1.xml" variable="myXMLFile"><cfset XMLDoc=XMLParse(myXMLFile)><cfscript>XMLDoc.XMLroot.XMLChildren[1].XMLAttributes["Expression"]= "#form.sExpression#";</cfscript><cffile action="write" addnewline="no" charset="utf-8" file="#1.xml" output="#toString(XMLDoc)#"><cfoutput>成功修改xml文件!</cfoutput>
修改程序运行结果:
1、 xml文件的属性Expression内容变为1000<3>1001<11> 而不是预想的1000<3>1001<11> ("<"转义成了<而">"没有转义>,不知什么原因,而我要的xml必须完成转义才能用!)请高人指点
2、 有没有直接取Expression里要修改部分的方法,如直接取出1进行修改,而不用取出expression整个部分了,这样方便与界面交互
------解决方案--------------------------------------------------------
看来只能使用replace来处理了。
- HTML code
<cfset form.sExpression = replace(form.sExpression, ">",">","all")>