首页 / XML / C#识别XML文件中的父子元素
C#识别XML文件中的父子元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#识别XML文件中的父子元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1394字,纯文字阅读大概需要2分钟。
内容图文
![C#识别XML文件中的父子元素](/upload/InfoBanner/zyjiaocheng/685/26eb3da53d8f492892e86a58bd790761.jpg)
我在互联网上找到了这个.
string xml = @"
<food>
<child>
<nested />
</child>
<child>
<other>
</other>
</child>
</food>
";
XmlReader rdr = XmlReader.Create(new System.IO.StringReader(xml));
while (rdr.Read())
{
if (rdr.NodeType == XmlNodeType.Element)
{
Console.WriteLine(rdr.LocalName);
}
}
以上结果将是
food
child
nested
child
other
这是完美的工作,只是我需要确定哪些元素包含子元素.
例如,我需要此输出
startParent_food
startParent_child
nested
endParent_child
startParent_child
other
endParent_child
endParent_food
解决方法:
您可以使用XmlReader做到这一点,但这并不是特别容易.您不能不继续阅读就知道一个元素是否有子元素,因此您必须缓冲和跟踪各种事物(因为XmlReader仅向前).除非您有充分的理由使用如此低级别的API,否则我强烈建议您避免使用它.
对于LINQ to XML来说,这是微不足道的
private static void Dump(XElement element, int level)
{
var space = new string(' ', level * 4);
if (element.HasElements)
{
Console.WriteLine("{0}startParent_{1}", space, element.Name);
foreach (var child in element.Elements())
{
Dump(child, level + 1);
}
Console.WriteLine("{0}endParent_{1}", space, element.Name);
}
else
{
Console.WriteLine("{0}{1}", space, element.Name);
}
}
如您在注释中暗示的那样,如果您的实际要求是修改某些值,那么您可以执行此操作而无需处理XML结构的详细信息.例如,要修改嵌套元素的值:
var doc = XDocument.Parse(xml);
var target = doc.Descendants("nested").Single();
target.Value = "some text";
var result = doc.ToString();
有关两者的演示,请参见this fiddle.
内容总结
以上是互联网集市为您收集整理的C#识别XML文件中的父子元素全部内容,希望文章能够帮你解决C#识别XML文件中的父子元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。