【问题标题】:How to show specific information on xml如何在xml上显示特定信息
【发布时间】:2021-03-17 22:31:07
【问题描述】:

我有一个 c# 控制台应用程序,我可以在其中更新、添加和删除到目前为止工作的 xml 中的信息。但是当我使用 WriteLine 在控制台中显示 xml 时,它显示如下:

<ArrayOfKunde xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Kunde id="1">
    <firstName>Hasan 2</firstName>
    <lastName>sad</lastName>
    <adress>sdfd</adress>
    <birthday>vcxbgf</birthday>
    <bankDetails>bcgh</bankDetails>
  </Kunde>
  <Kunde id="2">
    <firstName>ghf</firstName>
    <lastName>nbv</lastName>
    <adress>bjk</adress>
    <birthday>hjvn</birthday>
    <bankDetails>jhgj</bankDetails>
  </Kunde>
  <Kunde id="3">
    <firstName>mbn,</firstName>
    <lastName>hgj</lastName>
    <adress>ghj</adress>
    <birthday>ghjg</birthday>
    <bankDetails>hghj</bankDetails>
  </Kunde>
</ArrayOfKunde>

这可能是由于我的代码打印它:

string filepath = "customerdatabase2.xml";
            var xDoc = XDocument.Load(filepath);
            Console.WriteLine(xDoc);

我想问是否有任何方法可以过滤显示的内容?例如我不想显示:

<ArrayOfKunde xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

【问题讨论】:

  • “显示如下”。你还没有真正解释它应该如何显示。你只是想消除根元素?
  • 您需要iterate over the elements of xDoc 并选择性地只写入那些是 ArrayOfKunde 子节点的节点。可能有一个您可以使用的 XPath 表达式,但我已经离开该领域太久了,无法回忆细节。我敢肯定,有人会在这里插话。
  • List Kundes = doc.Descendents("Kunde").ToList(); foreach(昆德语中的昆德语){ Console.Writeline(kunde.ToString()); }

标签: c# .net xml


【解决方案1】:

使用:XDocument.Descendants

所以你的代码可以是:

string filepath = "customerdatabase2.xml";
var xDoc = XDocument.Load(filepath);       

foreach (var node in xDoc.Descendants().Skip(1))
    Console.WriteLine(node);

但这与您的 Xml 结构密切相关。请注意,我正在跳过第一个后代,因为那将是顶级 ArrayOfKunde 节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2020-10-24
    • 2023-03-24
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多