2013-03-07 5 views
3

Скажем, у меня есть XML, как это:XPath для возврата только определенных дочерних узлов, но с родителем - возможно?

<Entity> 
    <Record name="My Record 1" id="3a41b5c1-2462-e211-8a1c-005056b02dd2" count="1"> 
     <Data name="ec_name" value="My Name 1" linked="false" /> 
     <Data name="ec_allteams" value="100000000" linked="false" /> 
     <Data name="ec_teamtype" value="100000001" linked="false" /> 
    </Record> 
    <Record name="My Record 2" id="3a41b5c1-2462-e211-8a1c-005056b02dd3" count="2"> 
     <Data name="ec_name" value="My Name 2" linked="false" /> 
     <Data name="ec_allteams" value="100000002" linked="false" /> 
     <Data name="ec_teamtype" value="100000003" linked="true" /> 
    </Record> 
    <Record name="My Record 3" id="3a41b5c1-2462-e211-8a1c-005056b02dd4" count="3"> 
     <Data name="ec_name" value="My Name 3" linked="false" /> 
     <Data name="ec_allteams" value="100000004" linked="false" /> 
     <Data name="ec_teamtype" value="100000005" linked="false" /> 
    </Record> 
</Entity> 

Что бы XPath только вернуть дочерние узлы Запись + данных, где связанные = «истина»? Например, я хочу получить следующий результат:

<Record name="My Record 2" id="3a41b5c1-2462-e211-8a1c-005056b02dd3" count="2"> 
     <Data name="ec_teamtype" value="100000003" linked="true" /> 
    </Record> 

Возможно ли это в XPath?

ответ

3

Это не возможно, чтобы получить именно то, но вы могли бы получить узел данных, а затем прочитать его родители:

узел данных: /Entity/Record/Data[@linked='true']

Записи узел, содержащий ребенок связан = верно: /Entity/Record[Data/@linked='true']

+0

Я так и думал :(Спасибо за ваше предложение. – AshesToAshes

0

, чтобы получить все узлы данных, где связанные = истинные

//Data[@linked='true'] 

, чтобы получить родителя, где связан = истинный

//Data[@linked='true']/.. 

это вернет как родительский и дочерний узел, который связан = истинный

//Data[@linked='true']//parent