私は Ajax で Spring を使用しています。Ajax を使用して、xml ファイルを読み込んで解析するコントローラー メソッドを呼び出しています。Ajax 呼び出しへの応答として、解析されたノード (オブジェクト) を html ページに渡したいと思います。
これは私の Ajax 呼び出しです
$.ajax({
url: "query1",
type: "POST",
//dataType: "xml",
success: function(data) {
alert("in jax response");
alert("DATA" + data);
// parseXml(data);
}
});
これは私のコントローラーメソッドです
@RequestMapping(value = "/query1", method = RequestMethod.POST)
public @ResponseBody Node executeQuery1(ModelMap model) throws ParserConfigurationException, SAXException,IOException, XPathExpressionException {
// Standard of reading a XML file
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder;
Document doc = null;
XPathExpression expr = null;
builder = factory.newDocumentBuilder();
String filepath = "C:\\test.xml";
System.out.println("PATH: " + filepath);
doc = builder.parse(filepath);
// Create a XPathFactory
XPathFactory xFactory = XPathFactory.newInstance();
// Create a XPath object
XPath xpath = xFactory.newXPath();
// Compile the XPath expression
expr = xpath.compile("//person[@id=1]");
// Run the query and get a nodeset
Object result = expr.evaluate(doc, XPathConstants.NODE);
// Cast the result to a DOM NodeList
Node personNode = (Node) result;
model.addAttribute("xmlnode", personNode);
System.out.println("model set. going to return");
return personNode;
}
ノードの代わりに文字列を返すと、アラート ポップアップが表示されます。しかし、ノード オブジェクトを返すと失敗します。
また、この Node を Javascript でさらに解析したいと思います。ですので、良い方法を教えてください。Node を XML 文字列に変換して XML 文字列を返す必要がありますか?