XQuery - BaseX - XML - 修改

时间:2015-08-02 21:07:31

标签: node.js xml-parsing

现在我正在尝试使用nodejs作为服务器端和basex模块创建一个网站,以便能够使用javascript处理xquery请求。好吧我现在的问题是我不知道如何追加元素标签或删除特定元素标签(如果符合条件)。之后我想保存xml文件。

这是我的xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!-- Jeu de donnees en xml -->


<armateur>
    <capitaines>
        <personne sexe="M">
            <nom>YUE</nom>
            <prenom>Jonathan</prenom>
            <age>50</age>
            <telephone>06600210</telephone>
            <adresse>
                <codepostale>24000</codepostale>
                <ville>PERIGUEUX</ville>
                <norue>15</norue>
                <lieu>combe des dames</lieu>
                <pays>FRANCE</pays>
            </adresse>
            <passe>123</passe>
            <identifiant>a</identifiant>
            <idBailC>000001</idBailC>
        </personne>
        <personne sexe="M">
            <nom>CHUN</nom>
            <prenom>Oliver</prenom>
            <age>55</age>
            <telephone>06600211</telephone>
            <adresse>
                <codepostale>24000</codepostale>
                <ville>PERIGUEUX</ville>
                <norue>15</norue>
                <lieu>combe des wo</lieu>
                <pays>FRANCE</pays>
            </adresse>
            <passe>admin</passe>
            <identifiant>admin</identifiant>
            <idBailC>admin</idBailC>
        </personne>
        <personne sexe="M">
            <nom>RALF</nom>
            <prenom>Jack</prenom>
            <age>26</age>
            <telephone>06640210</telephone>
            <adresse>
                <codepostale>44000</codepostale>
                <ville>NANTES</ville>
                <norue>1</norue>
                <lieu>Independance</lieu>
                <pays>FRANCE</pays>
            </adresse>
            <passe>123</passe>
            <identifiant>b</identifiant>
            <idBailC>000002</idBailC>
        </personne>
        <personne sexe="F">
            <nom>FANNY</nom>
            <prenom>Chloe</prenom>
            <age>50</age>
            <telephone>07600210</telephone>
            <adresse>
                <codepostale>44000</codepostale>
                <ville>NANTES</ville>
                <norue>3</norue>
                <lieu>christianc pauc</lieu>
                <pays>FRANCE</pays>
            </adresse>
            <passe>123</passe>
            <identifiant>c</identifiant>
            <idBailC></idBailC>
        </personne>
        <personne sexe="M">
            <nom>Lam</nom>
            <prenom>Tom</prenom>
            <age>68</age>
            <telephone>06600219</telephone>
            <adresse>
                <codepostale>25000</codepostale>
                <ville>BORDEAUX</ville>
                <norue>12</norue>
                <lieu>Des Anges</lieu>
                <pays>FRANCE</pays>
            </adresse>
            <passe>123</passe>
            <identifiant>d</identifiant>
            <idBailC></idBailC>
        </personne>
    </capitaines>
    <navires>
        <navire disponible="non">
            <nomnav>navire1</nomnav>
            <bail etat="operationnel">
                <idBail>000001</idBail>
                <prise>2015-07-20T01:00:00-05:00</prise>
                <retrocession>2015-09-20T01:00:00-05:00</retrocession>
                <dureeB>60 jours</dureeB>
            </bail>
            <mission type="mission1">
                <debut>2015-07-20T01:00:00-05:00</debut>
                <fin>2015-08-20T01:00:00-05:00</fin>
                <dureeM>30 jours</dureeM>
                <capitaine>
                    <nomM>YUE</nomM>
                    <prenomM>Jonathan</prenomM>
                </capitaine>
                <idMission>Inde</idMission>
                <decision>attente</decision>
            </mission>
        </navire>
        <navire disponible="oui">
            <nomnav>navire2</nomnav>
            <bail etat="nonoperationnel">
                <idBail>pasdispo</idBail>
                <prise></prise>
                <retrocession></retrocession>
                <dureeB></dureeB>
            </bail>
            <mission type="">
                <debut></debut>
                <fin></fin>
                <dureeM></dureeM>
                <capitaine>
                    <nomM></nomM>
                    <prenomM></prenomM>
                </capitaine>
                <idMission></idMission>
                <decision>disponible</decision>
            </mission>
        </navire>
        <navire disponible="non">
            <nomnav>navire3</nomnav>
            <bail etat="operationnel">
                <idBail>000002</idBail>
                <prise>2015-09-20T01:00:00-05:00</prise>
                <retrocession>2015-09-30T01:00:00-05:00</retrocession>
                <dureeB>30 jours</dureeB>
            </bail>
            <mission type="mission3">
                <debut>2015-09-20T01:00:00-05:00</debut>
                <fin>2015-09-21T01:00:00-05:00</fin>
                <dureeM>12 jours</dureeM>
                <capitaine>
                    <nomM>Fanny</nomM>
                    <prenomM>Chloe</prenomM>
                </capitaine>
                <idMission>France</idMission>
                <decision>approuver</decision>
            </mission>
        </navire>       
    </navires>
</armateur>

例如我想添加另一个人物标签或删除。

1 个答案:

答案 0 :(得分:0)

来自:http://docs.basex.org/wiki/XQuery_Update#delete

的信息

您可能想要检查BaseX - Xquery更新模块。

如果你想删除一个人,我猜你最好的想法就是如果你使用他们的个人身份证,但由于你有没有身份证的人,我使用了他们的prenom。

代码看起来像这样:(我删除了Tom)

    declare context item := document {

    <armateur>
        <capitaines>
            <personne sexe="M">
                <nom>YUE</nom>
                <prenom>Jonathan</prenom>
                <age>50</age>
                <telephone>06600210</telephone>
                <adresse>
                    <codepostale>24000</codepostale>
                    <ville>PERIGUEUX</ville>
                    <norue>15</norue>
                    <lieu>combe des dames</lieu>
                    <pays>FRANCE</pays>
                </adresse>
                <passe>123</passe>
                <identifiant>a</identifiant>
                <idBailC>000001</idBailC>
            </personne>
            <personne sexe="M">
                <nom>CHUN</nom>
                <prenom>Oliver</prenom>
                <age>55</age>
                <telephone>06600211</telephone>
                <adresse>
                    <codepostale>24000</codepostale>
                    <ville>PERIGUEUX</ville>
                    <norue>15</norue>
                    <lieu>combe des wo</lieu>
                    <pays>FRANCE</pays>
                </adresse>
                <passe>admin</passe>
                <identifiant>admin</identifiant>
                <idBailC>admin</idBailC>
            </personne>
            <personne sexe="M">
                <nom>RALF</nom>
                <prenom>Jack</prenom>
                <age>26</age>
                <telephone>06640210</telephone>
                <adresse>
                    <codepostale>44000</codepostale>
                    <ville>NANTES</ville>
                    <norue>1</norue>
                    <lieu>Independance</lieu>
                    <pays>FRANCE</pays>
                </adresse>
                <passe>123</passe>
                <identifiant>b</identifiant>
                <idBailC>000002</idBailC>
            </personne>
            <personne sexe="F">
                <nom>FANNY</nom>
                <prenom>Chloe</prenom>
                <age>50</age>
                <telephone>07600210</telephone>
                <adresse>
                    <codepostale>44000</codepostale>
                    <ville>NANTES</ville>
                    <norue>3</norue>
                    <lieu>christianc pauc</lieu>
                    <pays>FRANCE</pays>
                </adresse>
                <passe>123</passe>
                <identifiant>c</identifiant>
                <idBailC></idBailC>
            </personne>
            <personne sexe="M">
                <nom>Lam</nom>
                <prenom>Tom</prenom>
                <age>68</age>
                <telephone>06600219</telephone>
                <adresse>
                    <codepostale>25000</codepostale>
                    <ville>BORDEAUX</ville>
                    <norue>12</norue>
                    <lieu>Des Anges</lieu>
                    <pays>FRANCE</pays>
                </adresse>
                <passe>123</passe>
                <identifiant>d</identifiant>
                <idBailC></idBailC>
            </personne>
        </capitaines>
        <navires>
            <navire disponible="non">
                <nomnav>navire1</nomnav>
                <bail etat="operationnel">
                    <idBail>000001</idBail>
                    <prise>2015-07-20T01:00:00-05:00</prise>
                    <retrocession>2015-09-20T01:00:00-05:00</retrocession>
                    <dureeB>60 jours</dureeB>
                </bail>
                <mission type="mission1">
                    <debut>2015-07-20T01:00:00-05:00</debut>
                    <fin>2015-08-20T01:00:00-05:00</fin>
                    <dureeM>30 jours</dureeM>
                    <capitaine>
                        <nomM>YUE</nomM>
                        <prenomM>Jonathan</prenomM>
                    </capitaine>
                    <idMission>Inde</idMission>
                    <decision>attente</decision>
                </mission>
            </navire>
            <navire disponible="oui">
                <nomnav>navire2</nomnav>
                <bail etat="nonoperationnel">
                    <idBail>pasdispo</idBail>
                    <prise></prise>
                    <retrocession></retrocession>
                    <dureeB></dureeB>
                </bail>
                <mission type="">
                    <debut></debut>
                    <fin></fin>
                    <dureeM></dureeM>
                    <capitaine>
                        <nomM></nomM>
                        <prenomM></prenomM>
                    </capitaine>
                    <idMission></idMission>
                    <decision>disponible</decision>
                </mission>
            </navire>
            <navire disponible="non">
                <nomnav>navire3</nomnav>
                <bail etat="operationnel">
                    <idBail>000002</idBail>
                    <prise>2015-09-20T01:00:00-05:00</prise>
                    <retrocession>2015-09-30T01:00:00-05:00</retrocession>
                    <dureeB>30 jours</dureeB>
                </bail>
                <mission type="mission3">
                    <debut>2015-09-20T01:00:00-05:00</debut>
                    <fin>2015-09-21T01:00:00-05:00</fin>
                    <dureeM>12 jours</dureeM>
                    <capitaine>
                        <nomM>Fanny</nomM>
                        <prenomM>Chloe</prenomM>
                    </capitaine>
                    <idMission>France</idMission>
                    <decision>approuver</decision>
                </mission>
            </navire>       
        </navires>
    </armateur>};

for $x in //armateur/capitaines/personne[prenom != 'Tom']

return
$x

此外,如果你想添加某人,我想如果你手动将它插入你的xml,它会更容易。

我真的希望这会有所帮助。