我有一个XML,它的多个节点处于同一级别,我每次都尝试查询相同的元素,但是有时该元素可以是element [5]或element [6]甚至是7,具体取决于用户实际填写了
尝试XMLData.query('//ticket/sections/section[@name="Incident"]/group[@id=25]/ticket-input[6]/values/value/enum_val/name')
及其一些变体,但是一些记录在tiecket输入[6]中包含信息,而其他记录在3到7之间,有一个唯一的96或685标识正确的节点(因此我可以到达子节点) ,但是在下面使用我无法对其进行过滤:
XMLData.query('//ticket/sections/section[@name="Incident"]/group[@id=25]/ticket-input/id=96/values/value/enum_val/name')
AS billing
FROM
XMLwithOpenXML
XML数据:
<section id="12" position="3" name="Incident" kind="Basic">
<group id="58" name="Facility Location">
</group>
<group id="25" name="Incident Location">
<ticket-input>
<id type="integer">93</id>
<name>City</name>
<data-type>enumerable</data-type>
<data-option>single</data-option>
<position type="integer">6</position>
<flags type="array"/>
<short-name nil="true"/>
<values>
<value id="8288834" client_id="">
<enum_val>
<name>cleveland</name>
</enum_val>
</value>
</values>
</ticket-input>
<ticket-input>
<id type="integer">91</id>
<name>Address 1</name>
<data-type>string</data-type>
<data-option nil="true"/>
<position type="integer">4</position>
<flags type="array">
<flag>allow_lowercase</flag>
</flags>
<short-name>Address 1</short-name>
<values>
<value id="8288832" client_id="">
<formatted_string_val>123 rd</formatted_string_val>
</value>
</values>
</ticket-input>
<ticket-input>
<id type="integer">260</id>
<name>Location Name</name>
<data-type>location</data-type>
<data-option nil="true"/>
<position type="integer">1</position>
<flags type="array"/>
<short-name nil="true"/>
<values>
<value id="8288835" client_id="">
<location>
<id type="integer">9893</id>
<kind>Hospital</kind>
<name>HEALTHS</name>
<address>123 rd</address>
<address-2 nil="true"/>
<city>cleveland</city>
<state>OH</state>
<zip>45632</zip>
<phone></phone>
<phone-2 nil="true"/>
<fax nil="true"/>
<fax-2 nil="true"/>
<code>1701007</code>
<location-group-id type="integer">16</location-group-id>
<ticket-fields-count type="integer">14</ticket-fields-count>
<disabled type="boolean">false</disabled>
<location-fields-count type="integer">1</location-fields-count>
<latitude>42° 22' N</latitude>
<longitude>083°281' W</longitude>
<location-type>Skilled Nursing Facility</location-type>
</location>
</value>
</values>
</ticket-input>
<ticket-input>
<id type="integer">97</id>
<name>State</name>
<data-type>enumerable</data-type>
<data-option>single</data-option>
<position type="integer">7</position>
<flags type="array"/>
<short-name nil="true"/>
<values>
<value id="8288836" client_id="">
<enum_val>
<name>MI</name>
</enum_val>
</value>
</values>
</ticket-input>
<ticket-input>
<id type="integer">685</id>
<name>Apartment, Suite, or Room</name>
<data-type>string</data-type>
<data-option nil="true"/>
<position type="integer">5</position>
<flags type="array">
<flag>allow_lowercase</flag>
</flags>
<short-name>Apt/Suite</short-name>
<values>
<value id="8288833" client_id="">
<formatted_string_val>12</formatted_string_val>
</value>
</values>
</ticket-input>
<ticket-input>
<id type="integer">96</id>
<name>Zip</name>
<data-type>string</data-type>
<data-option nil="true"/>
<position type="integer">8</position>
<flags type="array"/>
<short-name nil="true"/>
<values>
<value id="8288837" client_id="">
<formatted_string_val>48377</formatted_string_val>
</value>
</values>
</ticket-input>
在查询1上,我可以获取某些记录上的数据,但是在没有确切数量的“票证项目”的情况下,我可以按正确的顺序获取其他记录的数据。第二个查询将不会根据实际文本值进行过滤。