gpt4 book ai didi

MySQL 更新 XML 属性

转载 作者:行者123 更新时间:2023-11-29 01:44:25 25 4
gpt4 key购买 nike

在数据加载中,似乎有些 XML 属性映射不正确,我现在正试图纠正这个问题,但我正在努力解决 MySQL 对该 XML 列的处理问题。

我想为所有出现的字段(属性为“tag="520"')和子字段(属性为'code="3"')更正 XML 属性(不是值)。下面的查询返回受影响的 0 行,找到 1 行。有关如何实现此目标的任何线索。

UPDATE biblioitems
SET marcxml = UpdateXML(marcxml,'datafield[@tag="520"]/subfield[@code="3"]',
'datafield[@tag="520"][@ind1="3"]/subfield[@code="a"]')
WHERE biblionumber = '220405';

为清楚起见,包含 XML 片段:

原始片段

<datafield tag="300" ind1=" " ind2=" ">
<subfield code="f">article</subfield>
</datafield>
<datafield tag="520" ind1=" " ind2=" ">
<subfield code="3">A description of something here</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2=" ">
<subfield code="a"></subfield>
</datafield>

我想要的结果:

<datafield tag="300" ind1=" " ind2=" ">
<subfield code="f">article</subfield>
</datafield>
<datafield tag="520" ind1="3" ind2=" ">
<subfield code="a">A description of something here</subfield>
</datafield>
<datafield tag="655" ind1=" " ind2=" ">
<subfield code="a"></subfield>
</datafield>

无法弄清楚如何突出显示代码块中的更改(它是 tag="520"数据字段中的 ind1 属性及其关联的子字段属性)

最佳答案

您可以专门针对您希望使用 attribute::att 轴重写的属性。

用于验证行为的示例 MySQL 代码

SELECT UpdateXML('<root><sub att="foo" xatt="bar">Content Text</sub><sec att="etc">Container</sec></root>', '/root/sub/attribute::att', 'att="something"')

查询的结果会是

<root><sub att="something" xatt="bar">Content Text</sub><sec att="etc">Container</sec></root>

请记住在您的 XPATH 查询中要具体,因为如果多个目标匹配,则不会更新任何内容。 (通过测试观察)

关于MySQL 更新 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10718776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com