У меня есть структуру XML, как показано ниже:выбирая путь XML для нескольких узлов
<Children>
<Stand>
<Basics>
<Attribute Name="Name">User1</Attribute>
<Attribute Name="Scope">LOCAL</Attribute>
</Basics>
<Attributes/>
<Relationship>
<Attribute Name="Quantity">2</Attribute>
<Attribute Name="good Quantity">0</Attribute>
</Relationship>
</Stand>
<Stand>
<Basics>
<Attribute Name="Name">User2</Attribute>
<Attribute Name="Scope">LOCAL</Attribute>
</Basics>
<Attributes/>
<Relationship>
<Attribute Name="Quantity">5</Attribute>
<Attribute Name="good Quantity">0</Attribute>
</Relationship>
</Stand>
</Children>
Я хочу, чтобы извлечь Name
, Scope
, Quantity
и good Quantity
из приведенного выше XML. Я использую выражение Xpath:
//Children/Stand/* [self::Basics | self::Relationship]
В результате я получаю:
User1 LOCAL null null
null null 2 0
User2 LOCAL null null
null null 5 0
Я хочу привести ниже образом:
User1 LOCAL 2 0
User2 LOCAL 5 0
Может кто-нибудь помочь, чтобы получить желаемый результат ?
Я использую последовательность XML и извлекать значения, указанные выше. Я использую свой код ниже для справки. Я пробовал так, как вы упомянули, и не работает. ВЫБОР экстракт (значение (MN), '/ Основы/Атрибут [@ Name = "Name"]/text()'). GetStringVal() AS Module_Name, extract (value (MN), '/ Relationship/Attribute [@ Name = "Configured Quantity"]/text() '). GetStringVal() AS Quantity, extract (значение (MN) ",/Basics/Attribute [@ Name =" Scope "]/text()'). getStringVal() AS Scope FROM table A, table (xmlsequence (extract (XMLTYPE (A.XML_INFO), '// Children/Stand/[self :: Basics | self :: Relationship]'))) MN –
@narendragc не забудьте в комментарии (на всякий случай) – har07
@narendragc Прочтите мой предыдущий комментарий. В любом случае, попробуйте изменить xpath для 'xmlsequence (...)' part to '// Children/Stand', может быть? Это также полезно для сравнения, если вы публикуете первоначальный запрос (прежде чем пытаться применить мое предложение) – har07