英文:
C# how to find xml doc child record count
问题
以下是翻译好的部分:
格式1
<a>
<b/>
</a>
格式2
<a>
<b>
<c>
<c1>数据</c1>
<c2>数据1</c2>
</c>
</b>
</a>
在C#中,您可以使用XmlDocument类来解析XML并检查C记录是否存在以及获取C记录的计数。以下是一个示例代码片段:
using System;
using System.Xml;
class Program
{
static void Main()
{
string xml = @"
<a>
<b>
<c>
<c1>Data</c1>
<c2>Data1</c2>
</c>
</b>
</a>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlNodeList cNodes = doc.SelectNodes("//c");
if (cNodes != null && cNodes.Count > 0)
{
Console.WriteLine("C记录存在,数量为: " + cNodes.Count);
}
else
{
Console.WriteLine("C记录不存在。");
}
}
}
请注意,此示例假定您已经将XML数据加载到名为"xml"的字符串变量中。您可以根据您的实际需求更改XML数据和检查逻辑。
英文:
I have a xml in below both formats
format 1
<a>
<b/>
</a>
format 2
<a>
<b>
<c>
<c1>Data</c1>
<c2>Data1</c2>
</c>
</b>
</a>
How can I write c# code to see is c record exist or not and if exist how can take a count of c record?
答案1
得分: 2
使用 XDocument
,您可以像这样操作。如果未找到任何元素,Count
将返回子元素的数量,或者返回 0。
using System;
using System.Linq;
using System.Xml.Linq;
var format1 = """
<a>
<b/>
</a>
"""
var format2 = """
<a>
<b>
<c>
<c1>数据</c1>
<c2>数据1</c2>
</c>
</b>
</a>
"""
Console.WriteLine(Count(format1, "c")); // 打印 0
Console.WriteLine(Count(format2, "c")); // 打印 2
int Count(string xml, string elementName)
{
var document = XDocument.Parse(xml);
var count = document.Descendants(elementName).Elements().Count();
return count;
}
英文:
Using XDocument
you can do something like this. Count
will return the number of child elements or 0 if no elements was found.
using System;
using System.Linq;
using System.Xml.Linq;
var format1 = """
<a>
<b/>
</a>
""";
var format2 = """
<a>
<b>
<c>
<c1>Data</c1>
<c2>Data1</c2>
</c>
</b>
</a>
""";
Console.WriteLine(Count(format1, "c")); // Prints 0
Console.WriteLine(Count(format2, "c")); // Prints 2
int Count(string xml, string elementName)
{
var document = XDocument.Parse(xml);
var count = document.Descendants(elementName).Elements().Count();
return count;
}
答案2
得分: 0
以下函数将从XElement
中找到您想要的内容:
static int FindC(XElement root)
{
return root
.Elements("b")
.SelectMany(n => n.Elements("c"))
.SelectMany(n => n.Elements())
.Count();
}
使用方法是首先将XML解析为XDocument
,然后传递document.Root
:
var doc = XDocument.Parse(yourXml);
var count = FindC(doc.Root);
您也可以使用XPath。例如:
var countOfAnyC = xdoc.Root.XPathSelectElements("//c").Count();
var countOfABC = xdoc.Root.XPathSelectElements("/a/b/c").Count();
英文:
The following function will find what you want from a XElement
static int FindC(XElement root)
{
return root
.Elements("b")
.SelectMany(n => n.Elements("c"))
.SelectMany(n => n.Elements())
.Count();
}
Use it by first parsing the XML into XDocument
, then passing document.Root
var doc = XDocument.Parse(yourXml);
var count = FindC(doc.Root);
You can also use XPath. For example:
var countOfAnyC = xdoc.Root.XPathSelectElements("//c").Count();
var countOfABC = xdoc.Root.XPathSelectElements("/a/b/c").Count();
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论