XML - Как я могу получить доступ к атрибуту элемента? - PullRequest
2 голосов
/ 06 августа 2011

Я использую ColdFusion.Я пытаюсь получить доступ к атрибуту элемента и не могу понять, как это сделать.Название элемента - Пакет.Имя атрибута - ID.Мне нужно получить идентификатор пакета.

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

Я загрузил изображение идентификатора, который пытаюсь получить.

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

Клянусь, я перепробовал все возможные комбинациии везде искал ответ.Но, удачи.Вы можете помочь?

Я попробовал решения, предложенные ниже.Я не могу заставить его работать на меня.Кажется, я успешно поместил значение идентификатора пакета в переменную, но это просто массив.Я не могу получить доступ к нему в массиве.Вот моя ошибка:

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 ]

5 голосов
/ 06 августа 2011

Если вы следуете этому руководству , вам должно работать следующее (по сути, это синтаксис XPath):

<cfset IdAttributes= xmlSearch(MyXMLDoc, '/IntlRateV2Response/Package/@ID')>
1 голос
/ 06 августа 2011

Обновление: Исправлен регистр имени атрибута в комментариях

Если требуется только «id», подход Абеля более приятный.Но если вам нужно обрабатывать и другую информацию, любой из них должен работать.Просто следите за проблемами чувствительности к регистру.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...