【问题标题】:Oracle - Select XPath attribute in serialized contentOracle - 在序列化内容中选择 XPath 属性
【发布时间】:2019-06-17 11:10:17
【问题描述】:

我处理包含在 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无法忍受需要访问属性的“@”..

【问题讨论】:

    标签: sql xml oracle xpath xml-serialization


    【解决方案1】:

    在访问前缀变量时,您还应该考虑命名空间。或者您可以通过按本地名称获取变量来显式忽略命名空间:

    .../@*[local-name()="Type"]
    

    全名

    .../@*[name()="z:Type"]
    

    【讨论】:

      【解决方案2】:

      它的工作人员。非常感谢。

      .../@*[name()="z:Type"]

      .../@*[local-name()="Type"]

      【讨论】:

        猜你喜欢
        • 2013-09-06
        • 2018-09-12
        • 1970-01-01
        • 2011-03-19
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多