gpt4 book ai didi

C#读取父节点下的所有节点内部文本

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:37 31 4
gpt4 key购买 nike

我有一个看起来像的 xml 文件

<root>
<allnames>
<name1>george</name1>
<name2>lukas</name2>
<name3>nick</name3>
</allnames>
</root>

我试图在每个 child 的节点“Allnames”下添加一个数组所以数组看起来像{“乔治”、“卢卡斯”、“尼克”}(3 项)。

改为使用此代码

public string[] getStrings(string path)
try
{
List<string> whatToReturn = new List<string>();

XmlNodeList nodelist = xml.SelectNodes(path);

foreach (XmlNode node in nodelist)
{
whatToReturn.Add(node.InnerText);
}


return whatToReturn.ToArray();
}
catch (System.NullReferenceException)
{
return null;
}
}

它返回:{ "georgelukasnick"}(1 项)。

我只想返回 3 件而不是 1 件……有什么帮助吗?

最佳答案

您访问的文本不正确。

基本上,您要选择 AllNames 元素(单个节点),然后将其 InnerText 值添加到列表中 - 但是 InnerText AllNames 的 > 是连接的所有内部文本。

您应该选择 AllNames 元素,然后遍历其子元素 - 您可以使用 XPath 执行此操作:

XmlNodeList nodeList = xml.SelectNodes("root/allnames/child::node()");

您还可以通过 XDocument 类使用 LINQ to XML 以更简单的方式执行此操作(其中我的 xmlString 变量是您的示例 XML):

    var xDocument = XDocument.Parse(xmlString);
var strings = xDocument.Descendants("allnames").First().Elements().Select(x => x.Value).ToArray();

嗯,对我来说更简单 ;)

关于C#读取父节点下的所有节点内部文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34024021/

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