gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:03 26 4
gpt4 key购买 nike

这是一个示例 xml。如果要在某种意义上添加新字体,则在添加到首选项之前,所有现有字体都要与新字体进行比较。如果是 XmlDocument,如何检查节点(字体)是否已经存在?

<preferences>
<font role="console">
<size>9</size>
<fname>Courier</fname>
</font>
<font role="default">
<fname>Times New Roman</fname>
<size>14</size>
</font>
<font role="titles">
<size>10</size>
<fname>Helvetica</fname>
</font>
</preferences>

最佳答案

Xnode 有一个称为 DeepEqual 的功能来比较节点。 XmlNode可以通过简单的解析转换为Xnode。

    XElement XmlElementToXElement(XmlNode e)
{
return XElement.Parse(e.OuterXml);
}

所以,从这里开始会更容易。如果两个节点相等,下面的方法将返回 true。

    bool XmlNode_DeepEquals(XmlNode node1, XmlNode node2)
{
XElement tempX = XmlElementToXElement(node2);
XElement searchX = XmlElementToXElement(node1);
return XNode.DeepEquals(tempX, searchX))
}

此方法用于比较节点列表。

    bool isNodeAlreadyExists(XmlNode searchNode, XmlNodeList list)
{
bool exists = false;
foreach (XmlNode node in list)
{
if (XmlNode_DeepEquals(searchNode, node))
{
exists = true;
}
}
return exists;
}

关于c# - 如何在 C# 中比较 XmlDocument 的两个 XmlNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50384087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com