¿如何替换和插入新节点?
¿How replace and insert new node?
嗯,我在一个 jar 文件中执行了这个 xml 文件,我想添加一个新字段并更新另一个字段,当添加一个新字段正确但没有任何内容被压平时,问题就出现了更新数据时,我不停地收到错误字段,
这里是代码
xml:
<?xml version="1.0"?>
<?xml-stylesheet type ="text/xsl" href = "ejercicio2parte1.xslt"?>
<musica>
<cd>
<titulo_del_album>Los magroños</titulo_del_album>
<artista>Julian</artista>
<cancion>
<nombre>El cairo</nombre>
<duracion>4.50s</duracion>
</cancion>
<sello_discografico>sony BGM</sello_discografico>
<anyo_de_publicacion>1996</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Scarecrow</titulo_del_album>
<artista>Avantasia</artista>
<cancion>
<nombre>Scarecrow</nombre>
<duracion>7.11</duracion>
</cancion>
<sello_discografico>sony BGM</sello_discografico>
<anyo_de_publicacion>1999</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Chichos</titulo_del_album>
<artista>Jacobo</artista>
<cancion>
<nombre>El rapido</nombre>
<duracion>1.50</duracion>
</cancion>
<sello_discografico>El oro</sello_discografico>
<anyo_de_publicacion>1995</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Los rocos</titulo_del_album>
<artista>Martin</artista>
<cancion>
<nombre>Fulda</nombre>
<duracion>5.00</duracion>
</cancion>
<sello_discografico>El oro</sello_discografico>
<anyo_de_publicacion>2018</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Jacobinos</titulo_del_album>
<artista>El caucho</artista>
<cancion>
<nombre>French</nombre>
<duracion>6.20</duracion>
</cancion>
<sello_discografico>AFM Records</sello_discografico>
<anyo_de_publicacion>2010</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>JOJO</titulo_del_album>
<artista>Dio</artista>
<cancion>
<nombre>Kono dio da</nombre>
<duracion>1.00</duracion>
</cancion>
<sello_discografico>JOJO Bizarre</sello_discografico>
<anyo_de_publicacion>2000</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Black beast</titulo_del_album>
<artista>Beast in Blakc</artista>
<cancion>
<nombre>Berserker</nombre>
<duracion>5.49</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2009</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>K/DA</titulo_del_album>
<artista>Akali</artista>
<cancion>
<nombre>ALL OUT</nombre>
<duracion>5.00</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2019</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Plentakill</titulo_del_album>
<artista>Mordekaiser</artista>
<cancion>
<nombre>Thornamill</nombre>
<duracion>4.30</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2016</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Moonglow</titulo_del_album>
<artista>The thunder</artista>
<cancion>
<nombre>Cosmic night</nombre>
<duracion>6.00</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2004</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Mistery of time</titulo_del_album>
<artista>Edguy</artista>
<cancion>
<nombre>Deep purple</nombre>
<duracion>5.40</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2019</anyo_de_publicacion>
</cd>
</musica>
她是我插入的代码:
insert node
<cd>
<titulo_del_album>dsadsaw</titulo_del_album>
<artista>asddsasa</artista>
<cancion>
<nombre>asdsada</nombre>
<duracion>7.11</duracion>
</cancion>
<sello_discografico>sony BGM</sello_discografico>
<anyo_de_publicacion>1999</anyo_de_publicacion>
</cd>
before doc("Ejercicio2.xml") //musica
还有我的更新代码:
replace value of node
//cd/artista=("Julian")/cancion/nombre
with "Gloria Fuertes"
在 insert
表达式中,您告诉 XQuery 引擎在 //musica
之前插入 <cd>
节点。但是,<musica>
是文档的根节点,因此在它之前插入一个节点会导致 XML 文件格式不正确。我希望引擎会抛出错误。
如果您的目标是将 <cd>
元素插入到 <musica>
元素中,您将使用以下表达式:
insert node <cd/> into doc("Ejercicio2.xml")/musica
要控制元素是作为第一个元素还是最后一个元素插入,在into
关键字前添加as first
或as last
。
对于 replace
表达式,您尝试 select <artista>
元素时出现语法错误,并且 <nombre>
元素的路径错误。
对于 select Julian <artista>
元素,使用过滤器表达式:
//cd/artista[. = "Julian"]
扩展它以找到 <nombre>
元素:
//cd[artista = "Julian"]/cancion/nombre
请注意,尽管示例 XML 文件有缩进,但 <cancion>
不是 <artista>
的子元素 - 而是其兄弟元素。
嗯,我在一个 jar 文件中执行了这个 xml 文件,我想添加一个新字段并更新另一个字段,当添加一个新字段正确但没有任何内容被压平时,问题就出现了更新数据时,我不停地收到错误字段,
这里是代码 xml:
<?xml version="1.0"?>
<?xml-stylesheet type ="text/xsl" href = "ejercicio2parte1.xslt"?>
<musica>
<cd>
<titulo_del_album>Los magroños</titulo_del_album>
<artista>Julian</artista>
<cancion>
<nombre>El cairo</nombre>
<duracion>4.50s</duracion>
</cancion>
<sello_discografico>sony BGM</sello_discografico>
<anyo_de_publicacion>1996</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Scarecrow</titulo_del_album>
<artista>Avantasia</artista>
<cancion>
<nombre>Scarecrow</nombre>
<duracion>7.11</duracion>
</cancion>
<sello_discografico>sony BGM</sello_discografico>
<anyo_de_publicacion>1999</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Chichos</titulo_del_album>
<artista>Jacobo</artista>
<cancion>
<nombre>El rapido</nombre>
<duracion>1.50</duracion>
</cancion>
<sello_discografico>El oro</sello_discografico>
<anyo_de_publicacion>1995</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Los rocos</titulo_del_album>
<artista>Martin</artista>
<cancion>
<nombre>Fulda</nombre>
<duracion>5.00</duracion>
</cancion>
<sello_discografico>El oro</sello_discografico>
<anyo_de_publicacion>2018</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Jacobinos</titulo_del_album>
<artista>El caucho</artista>
<cancion>
<nombre>French</nombre>
<duracion>6.20</duracion>
</cancion>
<sello_discografico>AFM Records</sello_discografico>
<anyo_de_publicacion>2010</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>JOJO</titulo_del_album>
<artista>Dio</artista>
<cancion>
<nombre>Kono dio da</nombre>
<duracion>1.00</duracion>
</cancion>
<sello_discografico>JOJO Bizarre</sello_discografico>
<anyo_de_publicacion>2000</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Black beast</titulo_del_album>
<artista>Beast in Blakc</artista>
<cancion>
<nombre>Berserker</nombre>
<duracion>5.49</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2009</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>K/DA</titulo_del_album>
<artista>Akali</artista>
<cancion>
<nombre>ALL OUT</nombre>
<duracion>5.00</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2019</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Plentakill</titulo_del_album>
<artista>Mordekaiser</artista>
<cancion>
<nombre>Thornamill</nombre>
<duracion>4.30</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2016</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Moonglow</titulo_del_album>
<artista>The thunder</artista>
<cancion>
<nombre>Cosmic night</nombre>
<duracion>6.00</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2004</anyo_de_publicacion>
</cd>
<cd>
<titulo_del_album>Mistery of time</titulo_del_album>
<artista>Edguy</artista>
<cancion>
<nombre>Deep purple</nombre>
<duracion>5.40</duracion>
</cancion>
<sello_discografico>Nuclear Blast Records</sello_discografico>
<anyo_de_publicacion>2019</anyo_de_publicacion>
</cd>
</musica>
她是我插入的代码:
insert node
<cd>
<titulo_del_album>dsadsaw</titulo_del_album>
<artista>asddsasa</artista>
<cancion>
<nombre>asdsada</nombre>
<duracion>7.11</duracion>
</cancion>
<sello_discografico>sony BGM</sello_discografico>
<anyo_de_publicacion>1999</anyo_de_publicacion>
</cd>
before doc("Ejercicio2.xml") //musica
还有我的更新代码:
replace value of node
//cd/artista=("Julian")/cancion/nombre
with "Gloria Fuertes"
在 insert
表达式中,您告诉 XQuery 引擎在 //musica
之前插入 <cd>
节点。但是,<musica>
是文档的根节点,因此在它之前插入一个节点会导致 XML 文件格式不正确。我希望引擎会抛出错误。
如果您的目标是将 <cd>
元素插入到 <musica>
元素中,您将使用以下表达式:
insert node <cd/> into doc("Ejercicio2.xml")/musica
要控制元素是作为第一个元素还是最后一个元素插入,在into
关键字前添加as first
或as last
。
对于 replace
表达式,您尝试 select <artista>
元素时出现语法错误,并且 <nombre>
元素的路径错误。
对于 select Julian <artista>
元素,使用过滤器表达式:
//cd/artista[. = "Julian"]
扩展它以找到 <nombre>
元素:
//cd[artista = "Julian"]/cancion/nombre
请注意,尽管示例 XML 文件有缩进,但 <cancion>
不是 <artista>
的子元素 - 而是其兄弟元素。