首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XElement选择子元素到新的XElement

从XElement选择子元素到新的XElement
EN

Stack Overflow用户
提问于 2015-10-12 14:29:01
回答 1查看 286关注 0票数 0

我正在尝试从我的对象XElement中选择一些童数,并将它们放入一个新的XElement中。

代码语言:javascript
复制
 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"))));

有了这部分

代码语言:javascript
复制
var objNodes =
         doc.Descendants("object")
             .Where(node => node.Attribute("table").Value == idbsObject.Key)

我可以让object元素看起来像这样

代码语言:javascript
复制
 <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元素,我不需要所有的子元素。

预期结果

代码语言:javascript
复制
 <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>

当我试图得到这样的object元素时

代码语言:javascript
复制
var objNodes = doc.Descendants("object")
                   .Where(node => node.Attribute("table").Value == idbsObject.Key)
                   .Select(item => new XElement(item.Element("object")));

objNodes是null

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-12 15:06:00

注释不能标记为已接受。我知道它会起作用,因为几周前我回答了类似的问题。在最初的答案中,使用了XElement[],得到了一个错误,因为我将XAttributes和XElement[]结合在一起。注意,在我的解决方案中使用的是"object“,它是标记名。

代码语言:javascript
复制
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")})); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33083685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档