2015-10-12 35 views
0

我試圖從我的對象XElement中選擇一些childelements,並將它們放入新的XElement中。從XElement中選擇子元素到新的XElement中

var objNodes = 
    doc.Descendants("object") 
     .Where(node => node.Attribute("table").Value == idbsObject.Key) 
     .Select(item => new XElement(item.Element("object"), new XElement(item.Element("nodes")))); 

本篇

var objNodes = 
     doc.Descendants("object") 
      .Where(node => node.Attribute("table").Value == idbsObject.Key) 

我能夠得到這樣看

<object occur="-1" prefix="" table="Articles" description="" singlename="" name="" statemode="disabled" link="" exportable="0"> 
    <views> 
    <view id="1" type="" name=""> 
     <sql>SELECT ObjectID FROM WHERE</sql> 
     <columns> 
     <column description="" sortnode="" width="" /> 
     </columns> 
     <values /> 
    </view> 
    </views> 
    <objectviews> 
    <view id="view1" type="view" name="Bekijken" show="1" link="" /> 
    <view id="view2" type="edit" name="Bewerken" show="1" link="" /> 
    <view id="view3" type="delete" name="Verwijderen" show="1" link="" /> 
    <view id="view4" type="add" name="Toevoegen" show="1" link="" /> 
    </objectviews> 
    <nodes> 
    <node id="ArticleId" description="" required="" datatype="i" nodetype="" fieldlength="" reference="" exclude="" tab="" order="0" default="" decimals="" maxchars="" help="" unique="" show="" /> 
    <node id="Title" description="" required="" datatype="s" nodetype="" fieldlength="" reference="" exclude="" tab="" order="10" default="" decimals="" maxchars="" help="" unique="" show="" /> 
    </nodes> 
    <tabs> 
    <tab id="" order="0" type="normal" child="" foreignkey="" description="Algemeen" link="" /> 
    </tabs> 
</object> 

對象元素,但我怎麼能獲取對象和節點元素?我能夠獲得節點,但我無法設法將對象和節點元素合併爲一個。對於對象元素,我不想要所有的子元素。

預期結果

<object occur="-1" prefix="" table="Articles" description="" singlename="" name="" statemode="disabled" link="" exportable="0"> 
    <nodes> 
    <node id="ArticleId" description="" required="" datatype="i" nodetype="" fieldlength="" reference="" exclude="" tab="" order="0" default="" decimals="" maxchars="" help="" unique="" show="" /> 
    <node id="Title" description="" required="" datatype="s" nodetype="" fieldlength="" reference="" exclude="" tab="" order="10" default="" decimals="" maxchars="" help="" unique="" show="" /> 
    </nodes> 
</object> 

當我試圖讓對象元素這樣

var objNodes = doc.Descendants("object") 
        .Where(node => node.Attribute("table").Value == idbsObject.Key) 
        .Select(item => new XElement(item.Element("object"))); 

objNodes是接受null

+0

我沒有安裝VS但答案是這樣的:VAR objNodes = doc.Descendants( 「對象」) 。凡(結點=> node.Attribute( 「表」)值== (item)> new XElement(「object」,new object [] {item.Attributes(),item.Element(「nodes」)})); – jdweng

+0

@jdweng你的代碼似乎做了這個工作,它給了我需要的結果。如果你回答我的問題,我可以將你的答案標記爲接受:) – Sybren

回答

1

評論不能標記。我知道這會起作用,因爲幾周前我回答了類似的問題。在原來的答案中使用XElement []時犯了輕微的錯誤,並且因爲我組合了XAttributes和XElement []而出現錯誤。注意在我的解決方案中使用了「對象」這是標籤名稱。

var objNodes = doc.Descendants("object") .Where(node => node.Attribute("table").Value == idbsObject.Key) .Select(item => new XElement("object", new object[] {item.Attributes(), item.Element("nodes")})); 
+0

我知道評論不能被標記爲接受,這就是爲什麼我要求你回答這個問題。無論如何感謝您的回答。 – Sybren