gpt4 book ai didi

c# - 如何使用 SelectSingleNode 获取属性值?

转载 作者:可可西里 更新时间:2023-11-01 08:09:52 24 4
gpt4 key购买 nike

我正在解析一个 xml 文档,我需要找出 gid(一个属性)值 (3810)。

基于 SelectSingleNode()。我发现要找到属性名称及其值并不容易。

我可以使用这种方法还是必须切换到另一种方法。

附件是我的代码。

如何使用book obj 获取gid 的属性值3810。谢谢。

我的test.xml文件如下

<?xml version="1.0" ?>
<root>
<VersionInfo date="2007-11-28" version="1.0.0.2" />
<Attributes>
<AttrDir name="EFEM" DirID="1">
<AttrDir name="Aligner" DirID="2">
<AttrDir name="SequenceID" DirID="3">
<AttrObj text="Slot01" gid="3810" unit="" scale="1" />
<AttrObjCount value="1" />
</AttrDir>
</AttrDir>
</AttrDir>
</Attributes>
</root>

我写的test.cs如下

public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.Load("test.xml");

XmlNode book;
XmlNode root = doc.DocumentElement;

book = root.SelectSingleNode("Attributes[AttrDir[@name='EFEM']/AttrDir[@name='Aligner']/AttrDir[@name='SequenceID']/AttrObj[@text='Slot01']]");

Console.WriteLine("Display the modified XML document....");
doc.Save(Console.Out);
}
}

[2010 年 6 月 10 日更新]

  1. xml 文件是一个复杂的文件。包括数以千计的 gid。但是对于每个 Xpath,gid 都是唯一的。

  2. 我将 xml 文件加载到 TreeView 控件。 this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);。当 treeView1_AfterSelect 事件发生时,e.Node.FullPath 将作为字符串值返回。

  3. 我解析字符串值 e.Node.FullPath。然后我得到了上面的XPath成员。然后我试图找到选择了哪个 gid 项目。

我确实需要找到 gid 值作为返回值。

最佳答案

你可以写

XmlAttribute gidAttribute = (XmlAttribute)book.Attributes.GetNamedItem("gid");
String gidValue = null;
if (gidAttribute!=null)
value = gidAttribute.Value;

或者,扩展 Xpath 以获取属性,例如

Attributes[AttrDir[@name='EFEM']/AttrDir[@name='Aligner']/AttrDir[@name='SequenceID']/AttrObj[@text='Slot01']]/@gid

如果@gid 是唯一的,那么您可以简单地使用 Xpath

"//AttrObj[@gid='3810']"

获取具有给定 id 的所需节点。但请注意,每个请求都会搜索整个文档。获取所有节点,然后将它们放入 map 中,以 id 为键会更有效。

"//AttrObj[@gid]"

使用 XmlNode.SelectNodes 获取所有具有 @gid 属性的 AttrObj 的列表。

关于c# - 如何使用 SelectSingleNode 获取属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004587/

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