SQL Server 2008 уничтожает данные XML - невозможно получить текст элемента в наборе строк! - PullRequest
0 голосов
/ 15 января 2010

Пожалуйста, рассмотрите этот простой пример. Я не могу получить текст состояния элемента "красный" или "синий". Пожалуйста, помогите !!!!! это сводит меня с ума

DECLARE @xml XML;

SET @xml = '<capitals>
  <state name="Alabama" 
    abbreviation="AL" 
    capital="Montgomery" >red</state>
  <state name="Alaska" 
    abbreviation="AK" 
    capital="Juneau" >blue</state>
  <state name="Arizona" 
    abbreviation="AZ" 
    capital="Phoenix" >green</state>
</capitals>';

SELECT Node.value('@name', 'varchar(100)') AS Name,
  Node.value('@abbreviation', 'varchar(2)') AS Abbreviation,
  Node.value('@capital', 'varchar(100)') AS Capital
FROM @xml.nodes('/capitals/state') TempXML (Node);

Ответы [ 2 ]

4 голосов
/ 15 января 2010

Вы просто должны использовать. чтобы получить внутренний текст элемента. Вы также можете использовать text()[1] Существует действительно хороший учебник и примеры по xPath в здесь .

DECLARE @xml XML; 

SET @xml = '<capitals> 
  <state name="Alabama"  
    abbreviation="AL"  
    capital="Montgomery" >red</state> 
  <state name="Alaska"  
    abbreviation="AK"  
    capital="Juneau" >blue</state> 
  <state name="Arizona"  
    abbreviation="AZ"  
    capital="Phoenix" >green</state> 
</capitals>'; 

SELECT Node.value('@name', 'varchar(100)') AS Name, 
  Node.value('@abbreviation', 'varchar(2)') AS Abbreviation, 
  Node.value('@capital', 'varchar(100)') AS Capital,
  Node.value('.', 'varchar(100)') AS Color 
FROM @xml.nodes('/capitals/state') TempXML (Node); 
1 голос
/ 15 января 2010

Я думаю, что я глуп:

 Node.value('.','varchar(100)') AS PoliticalDisposition
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...