linq to xml如何检索节点名 [英] linq to xml how to retrieve nodename

查看:95
本文介绍了linq to xml如何检索节点名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好.
我有一个这样构造的xml文件:

hello.
I have a xml file structured this way:

<first>
<second>
<third1>lol</third1>
<third2>lolw</third2>
</second></first>



我需要随机选择一个节点名称,例如,我需要可视化"third2".我尝试过类似的



I need to select randomly a node name for example i need to visualize "third2". I tried something like

String xdoc = XDocument.Load(url).Descendants("first").Descendants("second").DescendantNodes.OrderBy(t => Guid.NewGuid()).First().ToString();

,但ot无效.我该怎么做?在此先感谢!

but ot does not work. How do i do it? Thanks in advance!

推荐答案

问候;

如果我误解了你的问题,请原谅我.但是,如果您尝试使用LINQ to XML来随机选择XML文档中的子XML节点或XElement,则可以使用
Greetings;

Forgive me if I misunderstood your question. But if you''re trying to use LINQ to XML to randomly select a child XML Node or XElement in an XML Document, I was able to piece the following small C# program using LINQPad Ver. 4.31;

void Main()
{
    //
    // Create an XML Document using XElement...
    //
    XElement sampleElements = XElement.Parse(
    @"<first>
        <second>
            <third1>lol</third1>
            <third2>lolw</third2>
            <third3>lolx</third3>
            <third4>loly</third4>
        </second>
    </first>");

    //
    // Instantiate a Random Number Generator
    //
    Random randomInts = new Random();
    
    if (randomInts == null)
    {
        return;
    }
    
    //
    // Using the Random Number Generator, create a randomized "third"
    // element name...
    //
    string thirdSought = 
    string.Format("third{0}", randomInts.Next(1, 4).ToString());

    //
    // Get an IEnumerable<xelement> that contains the matching third 
    // element name...
    //
    var randomThird = from third in sampleElements.Descendants(thirdSought)
                      select third;
                                           
    // randomThird.Dump();
    
    foreach (XElement third in randomThird)
    {
        string trace = 
        string.Format("Name: {0} Value: {1}", third.Name, third.Value);
    
        Console.WriteLine(trace);        
    }
        
    return;
}



执行时,以上C#代码将产生以下输出:



When executed, the above C# code produces the following output:

Name: third1 Value: lol



这是寻找所需的随机XML元素的方法吗?

我希望这会有所帮助和有趣.

最好的问候...



Is this the approach to finding a random XML Element you were looking for?

I hope this was of help and interest.

Best Regards...


        Dim xdoc As XDocument = XDocument.Parse(
                                    "<first> <second> <third1>lol</third1> <third2>lolw</third2> </second> </first>"
                                    )
        Dim elList As IEnumerable(Of XElement) = From el In xdoc...<third1> Select el
        Dim str As String = elList.FirstOrDefault.Value
        Dim name As String = elList.FirstOrDefault.Name.ToString
</third1>


C#代码


c# code

IEnumerable<XElement> elList = from el in xdoc.Descendants("third1") select el;
string strValue = elList.FirstOrDefault().Value;
string strName = elList.FirstOrDefault().Name.ToString();


这篇关于linq to xml如何检索节点名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆