【问题标题】:getting xml child nodes values获取 xml 子节点值
【发布时间】:2016-10-09 16:50:48
【问题描述】:

我有一个这样的 xml

<customlocation>
    <path>xxxxx</path>
    <filetype>xxxxx</filetype>
    <filetype>xxxxx</filetype>
    <filetype>xxxxx</filetype>
                .
                .
                .
    <filename>xxxxx</filename>
    <filename>xxxxx</filename>
    <filename>xxxxx</filename>
                .
                .
                .
    <delete>xxxxx</delete>
</customlocation>
<customlocation>
    <path>xxxxx</path>
    <filetype>xxxxx</filetype>
    <filetype>xxxxx</filetype>
    <filetype>xxxxx</filetype>
                .
                .
                .
    <filename>xxxxx</filename>
    <filename>xxxxx</filename>
    <filename>xxxxx</filename>
                .
                .
                .
    <delete>xxxxx</delete>
</customlocation>
                .
                .

您可以拥有任意数量的自定义位置标签 - 动态 - 我可以像这样轻松获取这些标签:

            XElement doc = XElement.Load(xmlFilePath);
            foreach(XElement elm in doc.Descendants().Elements("customlocation"))
        {

但问题是如何在其中搜索文件类型和文件名标签我搜索了很长时间但到目前为止还没有运气所以请帮忙 谢谢你

【问题讨论】:

  • 您要搜索什么?什么是输入和预期输出?
  • 我正在搜索文件类型和文件名标签以获取它们的值并将其存储在数组中注意:你看不到它,因为我刚刚发现将它们放在标签中会使它们不可见
  • @HariPrasad 我不能只使用 string sss= elm.Element("filetype").value;必须有迭代取决于我们有多少标签已经感谢您的评论
  • 使用类似下面的代码: var results = doc.Descendants().Elements("customlocation").Where(x => (string)x.Element("filetype") == " jpeg").Select(y => new { path = (string)y.Element("path")}).ToArray();

标签: c# xml linq dynamic foreach


【解决方案1】:

Elements 只查找那些是直接后代的元素,Descendants 查找任何级别的子元素(即子、孙子)

既然你想构造一个filetpefilename 的数组,你可以这样做。

XDocument doc = XDocument.Load(filepath);
var filetypes = doc.Descendants("filetype").Select(x=>x.Value).ToArray();
var filenames = doc.Descendants("filename").Select(x=>x.Value).ToArray();

查看Demo

【讨论】:

  • 实际工作但是这会返回数组中的所有文件类型值我应该能够从每个自定义位置标签中区分文件类型值有没有办法做到这一点?谢谢
  • 可以,但是你想用哪个属性来区分customlocation?
  • 我可以添加这样的属性 会有帮助吗??
【解决方案2】:

试试这个

List<string> Values = new List<string>();    
XDocument doc = XDocument.Load(Server.MapPath("Server.xml"));
foreach(XElement elm in doc.Descendants().Elements("customlocation"))
{
  foreach (XElement ele in elm.Elements("filetype"))
  {
    Values.Add(ele.Value);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 2015-02-28
    • 2013-09-15
    • 2021-10-23
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多