Select 个子元素从 XElement 到新的 XElement
Select subelements from XElement into new XElement
我正在尝试 select 我的对象 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
无法将评论标记为已接受。我知道它会起作用,因为几周前我回答了类似的问题。在最初的答案中,使用 XElement[] 时犯了一个小错误,并且因为我将 XAttributes 和 XElement[] 组合在一起而出现错误。请注意,在我的解决方案中使用了 "object" 这是标签名称。
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")}));
我正在尝试 select 我的对象 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
无法将评论标记为已接受。我知道它会起作用,因为几周前我回答了类似的问题。在最初的答案中,使用 XElement[] 时犯了一个小错误,并且因为我将 XAttributes 和 XElement[] 组合在一起而出现错误。请注意,在我的解决方案中使用了 "object" 这是标签名称。
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")}));