2012-05-09 3 views
0

У меня есть этот XML-файл:XPATH СЛОВА: удаление узла между

<Item Text="Reports" Navigateurl ="Reports/Default.aspx" Select="true"> 
    <Group> 
    <Item Text="Customers" NavigateUrl="Reports/Customers/Default.aspx" Select="true"> 
     <Group> 
     <Item Text="Customers" NavigateUrl="Reports/Customers/CustomerList.aspx" 
      Select="true" /> 
     <Item Text="Customer Products" 
     NavigateUrl="Reports/Customers/CustomersProducts.aspx" Select="true" /> 
     <Item Text="Customer Measurements" 
     NavigateUrl="Reports/Customers/CustomerLocationMeasurements.aspx" Select="true" /> 
     <Item Text="Customer Groups" NavigateUrl="Reports/Customers/CustomerGroups.aspx" 
     Select="true"/> 
     <Item Text="Customer Outages" NavigateUrl="Reports/Customers/CustomerOutages.aspx" 
     Select="true" /> 
     </Group> 
    </Item> 
    <Item Text="Rules" NavigateUrl="Reports/Rules/Default.aspx" Select="true" > 
     <Group> 
     <Item Text="Customer Product Rules" 
     NavigateUrl="Reports/Rules/CustomerProducts.aspx" Select="true"/> 
     <Item Text="Customer Product Rules Event Limits" 
      NavigateUrl="Reports/Rules/CustomerProductEventLimits.aspx" Select="true" /> 
     <Item Text="Customer Product Rules Curtailable Days/Hours" 
     NavigateUrl="Reports/Rules/CustomerProductCurtailableDaysHours.aspx" 
      Select="true" /> 
     </Group> 
    </Item> 
    </Group> 
    </Item> 

SO, когда я использую этот XPATH Expression,

  XmlDataSource XmlDataSource1 = new XmlDataSource(); 
     XmlDataSource1.DataFile = "~/Menu.xml"; 
     XmlDataSource1.XPath = "//Item[@Text ='Reports']/Group/Item     
            [@Select='true']  
     XmlDataSource1.DataBind(); 
     SiteMap1.DataSource = XmlDataSource1; 

я получаю этот выход:

  Customers 
      Group 
       Customer Pages 
      Rules 
      Group 
       Rules Pages 

Но я не хочу, чтобы тег группы отображался на выходе. Можете ли вы, пожалуйста, сообщить мне, как это можно достичь?

+0

Итак, что * делать * вы хотите, чтобы вас показывали? – Tomalak

+0

Я просто хочу, чтобы элемент группы не появлялся на выходе – Sayamima

ответ

1

XPath is запрос язык для выбора узлов или извлечения других данных из XML-документа. Таким образом, он не может изменить структуру документа - например, удалить узел.

Такой вид обработки, называемый преобразованием, может быть легко выполнен с использованием XSLT и (не так легко) с помощью XQuery.

+0

Могу ли я использовать LINQ to XML в этом случае? – Sayamima

+0

И я не хочу удалять его, но могу ли я написать выражение whihc получает только элементы элемента из элементов, игнорирующих элементы xml. – Sayamima

+0

@Nishanth: Нет, если вы выберете элемент 'item', он по-прежнему будет иметь дочерний элемент' group' , Вы не можете «удалить» ребенка с помощью XPath. –

Смежные вопросы