使用Cypher(XML)访问孩子的孩子

时间:2020-08-27 15:16:59

标签: xml neo4j cypher children

我无法访问此XML文件中的和标签。我设法找到了中的标签,但似乎无法为产品中的标签做到这一点。我希望有人可以对此提供帮助。抱歉,我的密码不正确,我还是刚开始使用neo4j ^^“。

<?xml version="1.0" encoding="UTF-8"?>
<drugbank xmlns="http://www.drugbank.ca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.drugbank.ca http://www.drugbank.ca/docs/drugbank.xsd" version="5.1" exported-on="2020-07-02">
<drug type="biotech" created="2005-06-13" updated="2020-06-12">
 <name>Lepirudin</name>
 <state>liquid</state>
 <synonyms>
    <synonym language="english" coder="">Hirudin variant-1</synonym>
    <synonym language="english" coder="">Lepirudin recombinant</synonym>
  </synonyms>
  <products>
    <product>
      <name>Refludan</name>
      <route>Intravenous</route>
    </product>
    <product>
      <name>Refludan</name>
      <route>Intravenous</route>
    </product>
  </products>
</drug>
</drugbank>
    CALL apoc.load.xml("file:///df.xml")
    YIELD value
    UNWIND value._children AS drug
    WITH drug.type AS drugtype,
    [item in drug._children WHERE item._type = "name"][0] AS name,
    [item in drug._children WHERE item._type = "state"][0] AS state,
    [item in drug._children WHERE item._type = "synonyms" | item._children][0] AS synonyms,
    [item in drug._children WHERE item._type = "products" | item._children][0][0] AS products
     
    MERGE (d:Droge {label: name._text})
    SET d.state = state._text
    SET d.name = name._text
    MERGE (s:State {label: state._text})
    SET s.state = state._text
    MERGE (s)-[:State_off]->(d)
    FOREACH (item in synonyms |
       MERGE (syn:Synonym {label: item._text})
       SET syn.language = item.language
       MERGE (syn)-[:Synonym_off]->(d) )
    RETURN *;

0 个答案:

没有答案