gpt4 book ai didi

c# - 如何获取 XElement 的值而不是所有子节点的值?

转载 作者:IT王子 更新时间:2023-10-29 04:21:38 29 4
gpt4 key购买 nike

示例 xml:

<parent>
<child>test1</child>
<child>test2</child>
</parent>

如果我查找父级为 XElement 的 parent.Value,我会得到“test1test2”。我期待的是“”。 (因为 .

没有文本/值

我应该寻找 XElement 的什么属性?

最佳答案

<parent> 中查找文本数据时元素,您应该寻找具有 NodeType 的子节点属性等于 XmlNodeType.Text .这些节点的类型为 XText .以下示例说明了这一点:

var p = XElement
.Parse("<parent>Hello<child>test1</child>World<child>test2</child>!</parent>");

var textNodes = from c in p.Nodes()
where c.NodeType == XmlNodeType.Text
select (XText)c;

foreach (var t in textNodes)
{
Console.WriteLine(t.Value);
}

更新:如果您只需要第一个文本节点(如果有的话),这里是一个使用 LINQ 方法调用而不是查询理解语法的示例:

var firstTextNode = p.Nodes().OfType<XText>().FirstOrDefault();
if (firstTextNode != null)
{
var textValue = firstTextNode.Value;
...do something interesting with the value
}

注意:使用 First()FirstOrDefault()将比 Count() > 0 更高效在这种情况下。 Count FirstOrDefault() 时总是枚举整个集合只会枚举直到找到匹配项。

关于c# - 如何获取 XElement 的值而不是所有子节点的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4251215/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com