【问题标题】:LINQ to XML Question: Returning Nodes with a particular selectLINQ to XML 问题:返回具有特定选择的节点
【发布时间】:2010-12-11 14:02:44
【问题描述】:

我有这个 XML:

<?xml version="1.0" encoding="utf-8"?>

    <ConfiguraCanale ID_Comando="1">
        <canaleDigitalOUTPUT ID_Canale="1" >
            <stato>0</stato>
        </canaleDigitalOUTPUT>
    </ConfiguraCanale>


    <ConfiguraCanale ID_Comando="2">
        <canaleAnalogicoINPUT ID_Canale="2">                
            <timeAttesaPreCamp>00:03:00</timeAttesaPreCamp> 
        </canaleAnalogicoINPUT>
    </ConfiguraCanale>      

    </Comandi>

我必须选择节点canaleAnalogicoINPUT,这很简单,但我还必须将ID_Comando从ConfiguraCanale带到canaleAnalogicoINPUT..因为我选择了节点canaleAnalogicoINPUT 我无法获取节点ConfiguraCanale的属性。

我很少使用 Linq to XML...

谢谢!!!

【问题讨论】:

  • 我不明白你的问题。为什么不做 2 个选择,一个用于 ConfiguraCanale(并提取 ID_Comando),一个用于 canaleAnalogicoINPUT?你能澄清你的问题吗?

标签: xml linq .net-3.5 select


【解决方案1】:

可能是这样的:

var inputs = from e in doc.Descendants("canaleAnalogicoINPUT")
             select new
             {
                 CanaleAnalogicoINPUT = e, // extract what you need from this node
                 IDComando = int.Parse(e.Parent.Attribute("ID_Comando").Value)
             };

【讨论】:

  • 我解决了 ID_Comando = canale.Parent.Attribute("ID_Comando").Value 在这种情况下 FirstAttribute 也很好:ID_Comando = canale.Parent.FirstAttribute.Value, PARENT 是解决方案...我必须多学习! :(
【解决方案2】:
var inputs = from e in doc.Elements("ConfiguraCanale")
             select new 
             {
                 IDComando = e.Attribute("ID_Comando").Value,
                 CanaleAnalogicoINPUT = e.Element("canaleAnalogicoINPUT")
             };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多