2012-05-09 101 views
0

你好,我有一個xml文件,我希望沒有它的一部分。所以,這是我的xml文件:寫XPATH表達式

  <Item Text="Reports" Navigateurl ="Reports/Default.aspx"> 
    <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" /> 
     <Item Text="Customer Outages" 
      NavigateUrl="Reports/Customers/CustomerOutages.aspx" Select="true"/> 
     </Group> 
    </Item> 

要選擇這部分我用這個表達式:

 XmlDataSource XmlDataSource1 = new XmlDataSource(); 
     XmlDataSource1.DataFile = "~/Menu.xml"; 
     XmlDataSource1.XPath = "//Item[@Text ='Customers']/Group"; 
     XmlDataSource1.DataBind(); 

其結果將是

 Group 
     Customers 
     CustomerProducts 
     .......... 

,但我想只有那些爲其選擇屬性是真實的。但我一直無法想象如何去做。你能幫我麼?

+0

'//項目[@Text = '客戶'] [@選擇= '真']'應做手段 – Kris

回答

0

這是正確的做法:

XmlDataSource1.XPath = "//Item[@Text ='Customers']/Group/Item[@Select = 'true']"; 
2

不知道我是否正確地記得 - 但我認爲這是做到這一點的方法。

XmlDataSource1.XPath = "//Item[@Text ='Customers']/Group[/Item/@Select='true']"; 
+0

「// Item [@Text ='Customers']/Group/Item [@ Select ='true']」; 這工作........只是一點點修改....謝謝 – Sayamima

+0

Np ..並感謝您張貼正確的方式來做到這一點:)我不記得 – Sandbeck

0

由於XPATH是XPATH,我已經制定了在PHP中的例子,因爲我沒有一個C#編譯器在我的Mac ATM得心應手。

路徑聲明"//Item[@Text ='Customers'][@Select='true']"結果:

Reports/Customers/Default.aspx 
Reports/Customers/CustomerList.aspx 

的示例代碼:

<?php 

$xml = <<<XML 
<Item Text="Reports" Navigateurl ="Reports/Default.aspx"> 
    <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" /> 
       <Item Text="Customer Outages" NavigateUrl="Reports/Customers/CustomerOutages.aspx" Select="true"/> 
      </Group> 
     </Item> 
    </Group> 
</Item> 
XML; 

$doc = new DOMDocument(); 
$doc->loadXML($xml); 
$xpath = new DOMXPath($doc); 
$list = $xpath->query("//Item[@Text ='Customers'][@Select='true']"); 
foreach($list as $item) 
{ 
    printf("%s\n", $item->getAttribute('NavigateUrl')); 
}