2011-04-19 142 views
0

我有一個XML文件,我正在閱讀代碼隱藏的C#ASP.Net頁面,其中列出了員工細節,並按照他們所屬的團隊進行組織。請看下圖:爲之前元素組添加不同值的XML元素

<user> 
<firstname>Tony</firstname> 
<surname>Smith</surname> 
<team>Board A</team> 
</user> 
<user> 
<firstname>Paula</firstname> 
<surname>Ram</surname> 
<team>Board A</team> 
</user> 
<user> 
<firstname>Linda</firstname> 
<surname>Smith</surname> 
<team>Board b</team> 
</user> 
<user> 
<firstname>Sam </firstname> 
<surname>Peak</surname> 
<team>Board b</team> 
</user> 

我想這樣做的是以下幾點:

<group>Board A</group> 
<user> 
<firstname>Tony</firstname> 
<surname>Smith</surname> 
<team>Board A</team> 
</user> 
<user> 
<firstname>Paula</firstname> 
<surname>Ram</surname> 
<team>Board A</team> 
</user> 
<user> 
<group>Board B</group> 
<firstname>Linda</firstname> 
<surname>Smith</surname> 
<team>Board b</team> 
</user> 
<user> 
<firstname>Sam </firstname> 
<surname>Peak</surname> 
<team>Board b</team> 
</user> 

所以基本上插入一個新元素與團隊遵循它包含在球隊元素的元素的名稱?我不確定我是否有任何意義?

Ta。

莫莫

回答

0

使用XML那將是怎樣的冗餘使用你的第二個例子的結構,因爲你已經可以組你的元素通過團隊使用XPath(或LINQ)。在XPATH:

"/user[team='Board b']" 

,如果你有System.Xml.XmlNode

string currentGroup = "Board B"; //get this from some control 
XmlNodeList groups = xdoc.SelectNodes(String.Format("/user[team='{0}']",currentGroup)); 

,或者如果你有一個System.Xml.XPath.XPathNavigator類

string currentGroup = "Board B"; 
XPathNodeIterator groups = xNav.Select(String.Format("/user[team='{0}']",currentGroup)); 

或者你可以把你的「用戶「:

<group name="Board A"> 
    <user> 
     <firstname>Tony</firstname> 
     <surname>Smith</surname> 
     <!-- <team>Board A</team> --> 
    </user> 
    <user> 
     <firstname>Paula</firstname> 
     <surname>Ram</surname> 
    </user> 
</group> 

然後以如何選擇它們爲例:

string currentGroup = "Board B"; 
XmlNodeList groups = xdoc.SelectNodes(String.Format("//user[parent::group/@name='{0}']",currentGroup)); 
相關問題