c# - 如何检查 XML 节点是否存在于另一个节点的子节点中?

标签 c# xmldocument xmlnode

我想将一个 XmlNode 添加到另一个 XmlNode 如果它不包含该节点(比较应该基于节点名称及其内容)

System.Xml.XmlDocument doc;
...
XmlNode newNode = doc.CreateElement(name);
newNode.InnerXml = something
XmlNode parentNode = doc.GetElementsByTagName(parentName);
if (parentNode.???? (newNode))
{
    parentNode.AppendChild(newNode);
}

我怎样才能检查这个存在? parentNode.ChildNodes 没有 Contain 方法。

最佳答案

我认为这会成功:

    private void doSomething() 
    {
        XmlDocument doc = new XmlDocument();
        XmlNode newNode = doc.CreateElement("name");
        newNode.InnerXml = "something";
        XmlNode parentNode = doc.GetElementsByTagName("parentName")[0]; 
            // I just stuck an index on end of above line... 
            // Note that GetElementsByTagName returns an XmlNodeList

        int huh = 0;
        foreach (XmlNode n in parentNode.ChildNodes)
        {
            // If I understood you correctly, you want these checks?
            if (n.InnerXml == newNode.InnerXml && n.Name == newNode.Name) huh++;
        }

        if (huh == 0) parentNode.AppendChild(newNode);
    }

关于c# - 如何检查 XML 节点是否存在于另一个节点的子节点中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076680/

相关文章:

c# - 捕捉和重新抛出 .NET 异常的最佳实践

xml - SelectNodes 返回 0 个元素

c# - 将 XmlDocument 转换为字符串

c# - 如何忽略 XML 文件中的前导空格?

c# - 在 C# 中使用 XSD 字符串验证 XmlDocument?

c# - 如何在 C# 中比较 XmlDocument 的两个 XmlNode?

XSLT - 在谓词过滤器中,为什么有时必须使用 XSLT current() 函数而不是 XPath 上下文节点点运算符?

c# - 如何在 Crystal 报表C#中添加行号

c# - 使用 memcpy 从 C++ 到 C#

c# - C#迭代器中的递归