前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XML检查属性

XML检查属性

作者头像
用户7741497
发布2022-07-05 09:25:00
5410
发布2022-07-05 09:25:00
举报
文章被收录于专栏:hml_知识记录

检查属性的基本方法

可以使用%XML.Node的以下方法。以检查当前节点的属性。

  • AttributeDefined() 如果当前元素具有具有给定名称的属性,则返回非零(TRUE)。
  • FirstAttributeName() 返回当前元素的第一个属性的属性名称。
  • GetAttributeValue() 返回给定属性的值。如果元素没有该属性,则该方法返回NULL。
  • GetNumberAttributes() 返回当前元素的属性数。
  • LastAttributeName() 返回当前元素的最后一个属性的属性名称。
  • NextAttributeName() 在给定属性名称的情况下,无论指定的属性是否有效,此方法都会按排序顺序返回下一个属性的名称。
  • PreviousAttributeName() 在给定属性名称的情况下,无论指定的属性是否有效,此方法都会按排序顺序返回上一个属性的名称。

下面的示例遍历给定节点中的属性并编写一个简单报表:

代码语言:javascript
复制
/// d ##class(Demo.XmlDemo).ShowAttributes("<?xml version='1.0'?><staff attr1='first' attr2='second' attr3='third' attr4='fourth' attr5='fifth'><doc><name>David Marston</name></doc></staff>")
/// <?xml version="1.0"?><staff attr1="first" attr2="second" attr3="third" attr4="fourth" attr5="fifth"><doc><name>David Marston</name></doc></staff>
ClassMethod ShowAttributes(string)
{
    set reader=##class(%XML.Reader).%New()
    set status=reader.OpenString(string)
    if $$$ISERR(status) {do $System.Status.DisplayError(status)}

    s node = reader.Document.GetDocumentElement()
    b
    s count = node.GetNumberAttributes()
    w !, "属性数量: ", count
    s first = node.FirstAttributeName()
    w !, "第一个属性是: ", first
    w !, "   值是: ",node.GetAttributeValue(first)
    s next = node.NextAttributeName(first)

    for i = 1 : 1 : count - 2 {
        w !, "下一个属性是: ", next
        w !, "   值是: ",node.GetAttributeValue(next)
        s next = node.NextAttributeName(next)
    }
    s last = node.LastAttributeName()
    w !, "最后一个属性是: ", last
    w !, "   值是: ",node.GetAttributeValue(last)
}

示例XML文档:

代码语言:javascript
复制
<?xml version="1.0"?>
<staff attr1="first" attr2="second" attr3="third" attr4="fourth" attr5="fifth">
  <doc>
    <name>David Marston</name>
  </doc>
</staff>

如果将此文档的第一个节点传递给示例方法,则会看到以下输出:

代码语言:javascript
复制
Number of attributes: 5
First attribute is: attr1
   Its value is: first
Next attribute is: attr2
   Its value is: second
Next attribute is: attr3
   Its value is: third
Next attribute is: attr4
   Its value is: fourth
Last attribute is: attr5
   Its value is: fifth

检查属性的其他方法

本节讨论可用于获取任何属性的名称、值、命名空间、QName和值命名空间的方法。这些方法分为以下几组:

  • 仅使用属性名称的方法
  • 使用属性名称和命名空间的方法

注意:在XML标准中,一个元素可以包含多个同名的属性,每个属性位于不同的名称空间中。但是,在InterSystems IRIS XML中,这是不受支持的。

仅使用属性名称的方法

使用以下方法获取有关属性的信息。

GetAttribute()

代码语言:javascript
复制
method GetAttribute(attributeName As %String, 
                    ByRef namespace As %String, 
                    ByRef value As %String, 
                    ByRef valueNamespace As %String)

返回给定属性的数据。此方法通过引用返回下列值:

  • Namespace是来自属性QName的命名空间URI
  • value 是属性值。
  • valueNamespace 值所属的命名空间URI。例如,以下属性:
代码语言:javascript
复制
xsi:type="s:string"

此属性的值为字符串,并且此值位于使用前缀s在其他位置声明的命名空间中。假设本文档的较早部分包含以下命名空间声明:

代码语言:javascript
复制
xmlns:s="http://www.w3.org/2001/XMLSchema" 

在本例中,valueNamespace将为“http://www.w3.org/2001/XMLSchema”.

GetAttributeNamespace()

代码语言:javascript
复制
method GetAttributeNamespace(attributeName As %String) as %String

从当前元素的名为AttributeName的属性的QName返回命名空间URI。

GetAttributeQName()

代码语言:javascript
复制
method GetAttributeQName(attributeName As %String) as %String

返回给定属性的QName

GetAttributeValue()

代码语言:javascript
复制
method GetAttributeValue(attributeName As %String) as %String

返回给定属性的值。

GetAttributeValueNamespace()

代码语言:javascript
复制
method GetAttributeValueNamespace(attributeName As %String) as %String

返回给定属性的值的命名空间。

使用属性名和命名空间的方法

要同时使用属性名称及其命名空间来获取有关属性的信息,请使用以下方法:

GetAttributeNS()

代码语言:javascript
复制
method GetAttributeNS(attributeName As %String, 
                      namespace As %String, 
                      ByRef value As %String, 
                      ByRef valueNamespace As %String)

返回给定属性的数据,其中AttributeNameNamespace指定感兴趣的属性。此方法通过引用返回以下数据:

  • value 是属性值。
  • valueNamespace 值所属的命名空间URI。例如,以下属性:
代码语言:javascript
复制
xsi:type="s:string"

此属性的值为字符串,并且此值位于使用前缀s在其他位置声明的命名空间中。假设本文档的较早部分包含以下命名空间声明:

代码语言:javascript
复制
xmlns:s="http://www.w3.org/2001/XMLSchema" 

GetAttributeQNameNS()

代码语言:javascript
复制
method GetAttributeQNameNS(attributeName As %String, 
                           namespace As %String)
                           as %String

返回给定属性的QName,其中AttributeNameNamespace指定感兴趣的属性。

GetAttributeValueNS()

代码语言:javascript
复制
method GetAttributeValueNS(attributeName As %String, 
                           namespace As %String) 
                           as %String

返回给定属性的值,其中AttributeNameNamespace指定感兴趣的属性。

GetAttributeValueNamespaceNS

代码语言:javascript
复制
method GetAttributeValueNamespaceNS(attributeName As %String, 
                                    namespace As %String) 
                                    as %String

返回给定属性的值的命名空间,其中AttributeNameNamespace指定感兴趣的属性。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 检查属性的基本方法
  • 检查属性的其他方法
    • 仅使用属性名称的方法
      • GetAttribute()
      • GetAttributeNamespace()
      • GetAttributeQName()
      • GetAttributeValue()
      • GetAttributeValueNamespace()
    • 使用属性名和命名空间的方法
      • GetAttributeNS()
      • GetAttributeQNameNS()
      • GetAttributeValueNS()
      • GetAttributeValueNamespaceNS
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档