【问题标题】:How do I read the value for and XML node and check if the value is correct如何读取 XML 节点的值并检查值是否正确
【发布时间】:2017-05-19 18:10:36
【问题描述】:

我对编程相当陌生,需要检查 XML 文件中的单个节点是否有某个值,并且需要检查该值是否正确。

我需要在 3 个不同的类中验证这 3 个节点:

<RunCodeAnalysis>true</RunCodeAnalysis>    

我需要从一个xml文件中选择这个特定的节点,并且需要检查节点的值是否为真,如果该值是真的,我希望在验证方面得到一些帮助

private void CodeAnalysisEnabled(XDocument xmlDoc)
{
    var codeAnalysis = from doc in xmlDoc.Root?.Descendants("RunCodeAnalysis") select doc;

    foreach (var codeAnalysisNode in codeAnalysis)
    {
        codeAnalysisNode.Value = "true";
    }
}

【问题讨论】:

  • 请提供minimal reproducible example - 我个人建议使用LINQ to XML,那么您可能甚至不需要使用SelectSingleNode,并且检查值等会更容易。在恐怕您的问题太模糊,我们无法帮助您。
  • 请编辑问题,而不是仅仅添加cmets。
  • 嗯,到目前为止,您还没有显示任何代码,或者什么才是“有效”...

标签: c# xml validation


【解决方案1】:

加载 XML 并使用 XPath 搜索标签:

var document = new XmlDocument();
document.Load(fileName);
var root = document.DocumentElement
var nodes = root.SelectNodes("//RunCodeAnalysis");

此示例从 XML 中选择所有 RunCodeAnalysis 节点。使用 XPath,您可以准确地选择您想要的内容。 Check this MSDN article.

【讨论】:

  • 我个人会为此使用 LINQ to XML - XDocument doc = XDocument.Load(fileName); var nodes = root.Descendants("RunCodeAnalysis");
  • @JonSkeet 嘿,乔恩我得到了选择,现在用代码和我需要做的事情更新了问题。你能再看看吗?
  • @Pagodatree:不,因为仍然不清楚您要实现什么。您目前正在修改所有值 - 并且无缘无故地使用 LINQ - 我以为您正在尝试检查它们?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
  • 2016-02-04
相关资源
最近更新 更多