当前位置: 代码迷 >> ColdFusion >> 真诚请问一个cf修改xml的有关问题
  详细解决方案

真诚请问一个cf修改xml的有关问题

热度:5092   发布时间:2013-02-26 00:00:00.0
真诚请教一个cf修改xml的问题
本人初学,请大家指点!

原xml文件:
XML code
<?xml version="1.0" encoding="utf-8"?>  <root Name="root">       <child Name="child1" Expression="1000&lt;1&gt;1001&lt;11&gt;/>       <child Name="child2" Expression="1000&lt;2&gt;1001&lt;22&gt;/>  </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转义符:"<"对应于&lt; ">"对应于&gt;)

现需要在显示结果上面修改节点child1的属性expression的一部分值,如将1000后面的1改为3,即目标xml的节点内容为: <child Name="child1" Expression="1000&lt;3&gt;1001&lt;11&gt;/>
   
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&lt;3>1001&lt;11> 而不是预想的1000&lt;3&gt;1001&lt;11&gt; ("<"转义成了&lt;而">"没有转义&gt;,不知什么原因,而我要的xml必须完成转义才能用!)请高人指点
2、 有没有直接取Expression里要修改部分的方法,如直接取出1进行修改,而不用取出expression整个部分了,这样方便与界面交互

------解决方案--------------------------------------------------------
看来只能使用replace来处理了。
HTML code
<cfset form.sExpression = replace(form.sExpression, ">","&gt;","all")>
  相关解决方案