XML - 如何访问元素的属性?

时间:2011-08-06 16:25:08

标签: xml coldfusion

我正在使用ColdFusion。我试图访问元素的属性,并不能完全弄清楚如何做到这一点。元素的名称是Package。属性的名称是ID。我需要获取包ID。

<cfset Packages = xmlSearch(MyXMLDoc, '/IntlRateV2Response/Package')>

我已经上传了我想要获取的身份证件的图像。

http://evikjames.com/SteinAir/xml.jpg

我发誓我已尝试过各种可能的组合,并随处寻找答案。但是,运气。你能帮忙吗?

我尝试过以下提供的解决方案。我无法让它为我工作。我似乎成功地将Package ID的值放入变量中,但它只是一个数组。我似乎无法在数组中访问它。这是我的错误:

Complex object types cannot be converted to simple values.

这是我正在使用的代码:

<cfset PackageID = xmlSearch(MyXMLDoc, 'Package/Package/@ID[i]')>
<cfset Observations = xmlSearch(MyXMLDoc, "    Package/Observations[i]")>

我可以输出观察,但我无法输出PackageID。

怎么了?

2 个答案:

答案 0 :(得分:5)

如果您关注this guide,以下内容适合您(基本上,这是XPath语法):

<cfset IdAttributes= xmlSearch(MyXMLDoc, '/IntlRateV2Response/Package/@ID')>

答案 1 :(得分:1)

更新:修复了每条评论的属性名称

的情况

如果只需要“id”,Abel的方法就更加流畅了。但是,如果您还需要处理其他信息,则其中任何一个都应该有效。只需注意区分大小写的问题。

<cfxml variable="str">
    <IntlRateV2Response>
        <Package ID="123">a</Package>
        <Package ID="456">b</Package>
        <Package ID="789">c</Package>
    </IntlRateV2Response>
</cfxml>

<cfset MyXMLDoc = xmlParse(str)>
<cfset packages = xmlSearch(MyXMLDoc, '/IntlRateV2Response/Package')>

<cfloop array="#packages#" index="pack">
    <cfoutput>
        #pack.xmlAttributes["ID"]# OR
        #pack.xmlAttributes.ID#  
    </cfoutput>
</cfloop>