在java中解析Neo4j ExecutionResult dumptoString

在java中解析Neo4j ExecutionResult dumptoString,java,neo4j,Java,Neo4j,我正在使用Neo4j图形数据库和java的Neo4j Cypher api来获取查询结果。dump to string方法将以字符串格式给出执行结果 GraphDatabaseFactory graphDbFactory = new GraphDatabaseFactory(); GraphDatabaseService graphDb = graphDbFactory.newEmbeddedDatabase("C:/TPNeo4jDB"); ExecutionEngine ex

我正在使用Neo4j图形数据库和java的Neo4j Cypher api来获取查询结果。dump to string方法将以字符串格式给出执行结果

  GraphDatabaseFactory graphDbFactory = new GraphDatabaseFactory();

  GraphDatabaseService graphDb = graphDbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");

  ExecutionEngine execEngine = new ExecutionEngine(graphDb);
  ExecutionResult execResult = execEngine.execute("MATCH (java:JAVA) RETURN java");
  String results = execResult.dumpToString();
  System.out.println(results);
输出字符串如下所示

 +--------------------------+
 | a                        |
 +--------------------------+
 | Node[12]{type:"java 1"} |
 | Node[13]{type:"java 2"} |
 +--------------------------+
 2 rows
是否有任何默认API以通用方式解析此内容

根据答案,我已经这样做了

ExecutionResult execResult = execEngine.execute("MATCH (java:JAVA) RETURN java");
    Iterator<Node> n_column = execResult2.columnAs( "java" );
    for ( Node node : IteratorUtil.asIterable( n_column ) )
    {
        // note: we're grabbing the name property from the node,
        // not from the n.name in this case.
       String nodeResult = node + ": " + node.getProperty( "type" );
       System.out.println("noderesult :"+nodeResult);
    }
是的,您可以这样做:

Iterator<Node> javaNodes = execResult.columnAs( "java");
for (Node node : IteratorUtil.asIterable(javaNodes))
{
    //do something with the node
}
Iterator javaNodes=execResult.columns(“java”);
for(节点:IteratorUtil.asIterable(javaNodes))
{
//对节点执行一些操作
}
更多信息,包括当您有许多列时要做什么,请参阅

根据评论更新:

Cypher查询是
MATCH(java:java)returnjava
,因此列名将是java,该列中返回的值是
节点


如果需要type属性,那么查询将是
MATCH(java:java)返回java.type作为type
,然后可以执行
列(“type”)
。此列的类型现在将是字符串。

execresult.columnAs()应该是正确的列值。这里应该是'type'而不是'java',实际上,您的查询是返回java,因此java是列名。请参阅answerIt中的更新。它正在处理第一个值,之后会引发错误。请查看更新的答案。异常为答案:NotInTransactionException。您需要将这一切打包到一个事务中。文档说明了这一点(我提供的链接)。您还可以查看从该页面引用的内容。
Iterator<Node> javaNodes = execResult.columnAs( "java");
for (Node node : IteratorUtil.asIterable(javaNodes))
{
    //do something with the node
}