sql - Oracle - 在序列化内容中选择 XPath 属性
问题描述
我处理 Oracle 11g 上的表中包含的序列化内容。我需要修改我的 XML 内容中的属性值。所以,我使用 XPath 来访问标签...我可以更改标签的值,但我不能修改属性值。
我的文件大致是这样设计的:
<ItemsParams>
<Cores>
<Inral z:Type="someTexte1">
<FinalTags>Value1</FinalTags>
</Inral>
<Cores>
<ItemsParams>
当我需要更改 FinalTags 值时,我在查询中使用此 XPath:
XPath = *[name()="ItemsParam"]/*[name()="Testing"]/*[name()="Topics"]/*[name()="Parameter"]/*[name()="Texts"]/*[name()="Cores"]/*[name()="Inral"]/*[name()=''Value'']/text()
它有效。
但是当我需要更改属性值时"z:Type"
,我使用:
XPath = *[name()="ItemsParam"]/*[name()="Testing"]/*[name()="Topics"]/*[name()="Parameter"]/*[name()="Texts"]/*[name()="Cores"]/*[name()="Inral"]/@z:Type
并且无法访问它..经过多次测试,我认为Oracle无法忍受需要访问属性的“@”..
解决方案
在访问前缀变量时,您还应该考虑命名空间。或者您可以通过本地名称获取变量来显式忽略命名空间:
.../@*[local-name()="Type"]
或全名:
.../@*[name()="z:Type"]
推荐阅读
- javascript - 使用 flexbox 在容器中动态调整盒子
- r - 按组 ID 变量分组的单个变量的条形图,以实现一个条形图,其中包含每个特定组的所有值
- facebook - 为什么 Graph API 会跳过提要帖子?
- python - 如何使用日期作为 x 轴绘制数据框
- asp.net-mvc - 通过 HTTPS 测试 Stripe webhook 不断失败:超时
- c# - 如何在 C# 中使用 WordNet?
- android - 当滚动底部导航栏不隐藏时 - BottomNavigationBehavior
- hta - 使用 IE10 未显示 HTA 图标
- asp.net-mvc - godaddy 在我网站的 URL 中添加了我的文件夹名称
- python - 如果python中没有文件怎么写