Linq to XML,提取属性和元素

发布于 2024-11-08 22:39:40 字数 1143 浏览 0 评论 0原文

我是 XML 和 Linq to XML 的新手,只是找不到解释如何使用它的好指南。我有一个简单的 XML 字符串,结构如下,

<mainitem>

  <items>
    <itemdescription>ABC</itemdescription>
    <item>
      <itemtext>XXX</itemtext>
    </item>
    <item>
      <itemtext>YYY</itemtext>
    </item>
    <item>
      <itemtext>ZZZ</itemtext>
    </item>
  </items>

  <overalldescription>ABCDEFG</overalldescription>
  <itemnodes>
    <node caption="XXX" image="XXX"></node>
    <node caption="YYY" image="YYY"></node>
    <node caption="ZZZ" image="ZZZ"></node>
  </itemnodes>
</mainitem>

我使用 C# 代码

 var Items = (from xElem in XMLCODEABOVE.Descendants("item")
              select new ItemObject
              {
                  ItemObjectStringProperty = xElem.Element("itemtext").Value,
              }
              );

来提取 itemtext 对象的列表以与我的代码一起使用。我需要帮助的地方是提取节点元素的标题和图像属性的列表。我还需要总体描述和项目描述。我已经尝试了上述代码的每种变体,用后代代替元素,用元素代替属性等。我知道这可能是一个基本问题,但似乎没有直接的指南可以向初学者解释这一点。

I am new to XML and Linq to XML and I just can't find a good guide that explains how to work with it. I have a simple XML string structured as follows

<mainitem>

  <items>
    <itemdescription>ABC</itemdescription>
    <item>
      <itemtext>XXX</itemtext>
    </item>
    <item>
      <itemtext>YYY</itemtext>
    </item>
    <item>
      <itemtext>ZZZ</itemtext>
    </item>
  </items>

  <overalldescription>ABCDEFG</overalldescription>
  <itemnodes>
    <node caption="XXX" image="XXX"></node>
    <node caption="YYY" image="YYY"></node>
    <node caption="ZZZ" image="ZZZ"></node>
  </itemnodes>
</mainitem>

I am using C# code like

 var Items = (from xElem in XMLCODEABOVE.Descendants("item")
              select new ItemObject
              {
                  ItemObjectStringProperty = xElem.Element("itemtext").Value,
              }
              );

to extract a list of the itemtext objects for use with my code. Where I need help is in extracting a list of the caption and image attributes of my node elements. I also need the overalldescription and the itemdescription. I have tried every variation of the above code substituting Descendant for Elements, Element for Attribute etc. I know this is probably a basic question but there doesn't seem to be a straight forward guide out there to explain this to a beginner.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

み零 2024-11-15 22:39:40

要获取标题

// IEnumerable<string>
var captions = from node in doc.Descendants("node")
               select node.Attribute("caption").Value;

或一次性获取标题和图像属性:

// IEnumerable of the anonymous type
var captions = from node in doc.Descendants("node")
               select new { 
                   caption = node.Attribute("caption").Value,
                   image = node.Attribute("image").Value
               };

对于说明:

 // null ref risk if element doesn't exist
 var itemDesc = doc.Descendants("itemdescription").FirstOrDefault().Value;
 var overallDesc = doc.Descendants("overalldescription ").FirstOrDefault().Value;

To get the captions

// IEnumerable<string>
var captions = from node in doc.Descendants("node")
               select node.Attribute("caption").Value;

Or both the captions and image attributes in one shot:

// IEnumerable of the anonymous type
var captions = from node in doc.Descendants("node")
               select new { 
                   caption = node.Attribute("caption").Value,
                   image = node.Attribute("image").Value
               };

For the descriptions:

 // null ref risk if element doesn't exist
 var itemDesc = doc.Descendants("itemdescription").FirstOrDefault().Value;
 var overallDesc = doc.Descendants("overalldescription ").FirstOrDefault().Value;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文