Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 从特定父元素读取某些子元素_Xml_Vb.net_Parent Child - Fatal编程技术网

Xml 从特定父元素读取某些子元素

Xml 从特定父元素读取某些子元素,xml,vb.net,parent-child,Xml,Vb.net,Parent Child,示例XML <root> <cmdset>Set 1 <comment>Comment 1 here.</comment> <cmd>Command 1</cmd> <cmd>Command 2</cmd> </cmdset> <cmdset>Set 2 <comment>Comment 2 here.</com

示例XML

<root>
 <cmdset>Set 1
     <comment>Comment 1 here.</comment>
     <cmd>Command 1</cmd>
     <cmd>Command 2</cmd>
 </cmdset>

 <cmdset>Set 2
     <comment>Comment 2 here.</comment>
     <cmd>Command 3</cmd>
     <cmd>Command 4</cmd>
 </cmdset>
</root>
哪个输出到列表框

Set 1
Set 2
现在,我希望能够处理特定
元素中的某些子元素,仅处理本例中的
元素,而不是
元素。因此,如果在列表框中选择了Set 1,我只想处理文本“Command 1”和“Command 2”

有人告诉我,给元素一个ID或名称会让事情变得更简单,但我希望尽可能避免这种情况,因为我希望最终用户可以编辑XML(有时不是很专业),所以我尽量让事情简单


我尝试过各种不同的想法,但都没有用,我是XML新手(从SO获得了填充列表框的代码),所以如果到目前为止我所做的任何事情都是不好的做法,请大声说出来。

是的,如果您正在查看的值位于属性或子元素中,那么这样做会更容易,但仍然可以这样做。这将遍历包含文本
Set 1
cmdset
的所有
cmd
值:

将每个节点作为doc.SelectNodes中的XmlNode(//cmdset[normalize space(text())='Set 1']/cmd)
作为字符串的Dim值=node.InnerText
' ...
下一个
方括号建立了一个条件,因此只包括该条件为真的元素。
normalize space
函数对于从本质上修剪文本以去除文本后面的新行是必需的

不过,从你的问题来看,这有点不清楚,如果这正是你要问的。如果已经有对所需父元素的引用,则可以简单地执行以下操作:

Dim cmdsetElement作为XmlElement=”。。。
将每个节点作为cmdsetElement中的XmlNode。选择节点(“cmd”)
作为字符串的Dim值=node.InnerText
' ...
下一个

是的,如果您正在查看的值位于属性或子元素中,则执行此操作会更容易,但仍然可以执行此操作。这将遍历包含文本
Set 1
cmdset
的所有
cmd
值:

将每个节点作为doc.SelectNodes中的XmlNode(//cmdset[normalize space(text())='Set 1']/cmd)
作为字符串的Dim值=node.InnerText
' ...
下一个
方括号建立了一个条件,因此只包括该条件为真的元素。
normalize space
函数对于从本质上修剪文本以去除文本后面的新行是必需的

不过,从你的问题来看,这有点不清楚,如果这正是你要问的。如果已经有对所需父元素的引用,则可以简单地执行以下操作:

Dim cmdsetElement作为XmlElement=”。。。
将每个节点作为cmdsetElement中的XmlNode。选择节点(“cmd”)
作为字符串的Dim值=node.InnerText
' ...
下一个

那么你想让它使用
text()=“设置1
作为条件?那么你想让它使用
text()=“设置1
作为条件?现在全部排序,谢谢。你正在成为这里一张熟悉的面孔。我想你已经回答了我最后两三个问题了。谢谢现在都整理好了,谢谢。你正在成为这里一张熟悉的面孔。我想你已经回答了我最后两三个问题了。谢谢
Set 1
Set 2