找不到ColdFusion Java方法异常
这个问题让我很生气.我正在尝试在ColdFusion中使用
Java来创建Document对象.当我这样做:
nd = createObject("java","javax.xml.parsers.DocumentBuilder"); 我可以转储nd并看到它正确加载了所有方法: object of javax.xml.parsers.DocumentBuilder Class Name javax.xml.parsers.DocumentBuilder Method / Return Type getDOMImplementation() / org.w3c.dom.DOMImplementation getSchema() / javax.xml.validation.Schema isNamespaceAware() / boolean isValidating() / boolean isXIncludeAware() / boolean newDocument() / org.w3c.dom.Document parse(java.io.File) / org.w3c.dom.Document parse(java.lang.String) / org.w3c.dom.Document parse(org.xml.sax.InputSource) / org.w3c.dom.Document parse(java.io.InputStream,java.lang.String) / org.w3c.dom.Document parse(java.io.InputStream) / org.w3c.dom.Document reset() / void setEntityResolver(org.xml.sax.EntityResolver) / void setErrorHandler(org.xml.sax.ErrorHandler) / void 我正在尝试调用newDocument()方法.我在cfscript和cfsets中都尝试了以下所有内容: nd.newDocument(); nd.newDocument(JavaCast("null","")); nd = createObject("java","javax.xml.parsers.DocumentBuilder").newDocument(); nd = createObject("java","javax.xml.parsers.DocumentBuilder").newDocument(JavaCast("null","")); 但是,无论我尝试什么方法,我都会收到此错误:
我可以看到方法被加载..方法没有重载..它不需要任何参数..而且,即使我明确告诉CF我传入null,它也找不到方法. . 我尝试访问类中的其他方法 – 它也找不到那些..我不知道为什么我可以转储类的内容 – 我可以看到所有方法..但是,不知何故CF正在获得当我试着打电话给他们时,他们感到很困惑,找不到它们. 任何想法都会超级有用.. 谢谢!! 解决方法
您必须为documentBuilder工厂创建一个对象.在工厂的帮助下,您可以获得经过验证的xml信息.在这里,我创建了对象并使用documentbuilderfactory调用parse方法.
此外,您必须注入newInstance(),然后才能访问newdocument()方法. 我的Xml内容:testParse.xml <?xml version="1.0"?> <company> <staff id="1001"> <firstname>yong</firstname> <lastname>mook kim</lastname> <nickname>mkyong</nickname> <salary>100000</salary> </staff> <staff id="2001"> <firstname>low</firstname> <lastname>yin fong</lastname> <nickname>fong fong</nickname> <salary>200000</salary> </staff> </company> * CF代码: <cfset myObj = createObject("java","javax.xml.parsers.DocumentBuilderFactory")> <cfset createDocs = myObj.newInstance().newDocumentBuilder()> <cfset parseDocs = createDocs.parse(expandpath('/testParse.xml'))> <cfset getNodeName = parseDocs.getDocumentElement().getNodeName()> <cfset getList = parseDocs.getElementsByTagName("staff")> <cfloop index="i" from="1" to="#getList.getlength()#"> <!--- Do your business logic here ---> </cfloop> 我希望它对你有所帮助.谢谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |