Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
向ListView添加项会重复相同的XML元素_Xml_Vb.net - Fatal编程技术网

向ListView添加项会重复相同的XML元素

向ListView添加项会重复相同的XML元素,xml,vb.net,Xml,Vb.net,我有一个listView框,正在向其中添加项目。但它为每一行中的idAtt和applicIDAtt元素提供了相同的文本/项。desc确实会为每一行更新一个新值 代码 示例XML <dmodule> <content> <faultIsolation> <faultIsolationProcedure applicRefId="Software" id="tree1"> <fault faultC

我有一个listView框,正在向其中添加项目。但它为每一行中的idAtt和applicIDAtt元素提供了相同的文本/项。desc确实会为每一行更新一个新值

代码

示例XML

<dmodule>
<content>
    <faultIsolation>
        <faultIsolationProcedure applicRefId="Software" id="tree1">
            <fault faultCode=" "/>
            <faultDescr>
                <descr>This nodes description</descr>
            </faultDescr>
        </faultIsolationProcedure>
    </faultIsolation>
</content>

此节点描述如下:

你的XPath有点不稳定;您并没有真正将文档视为一组分层节点。如果有帮助,可以把它想象成文件路径和文件夹。在特定路径获取“文件夹”,并拉出其属性/内部文本(文件),但相对地从您所在的位置对其进行寻址

For Each node As XmlNode In doc.SelectNodes("/dmodule/content/faultIsolation/faultIsolationProcedure")
    Dim idAtt = node.Attributes("id").Value
    Dim desc As String = node.SelectSingleNode("faultDescr/descr").InnerText
    Dim applicIDAtt = node.Attributes("applicRefId").Value
现在,您并没有发布一个有用的大型XML文档示例,以便我准确地了解节点在哪个层次上重复它们自己,所以我假设它是这样的:

<dmodule> 
    <content>
        <faultIsolation>
            <faultIsolationProcedure applicRefId=""Software"" id=""tree1"">
                <fault faultCode="" ""/>
                <faultDescr>
                    <descr>This nodes description</descr>
                </faultDescr>
            </faultIsolationProcedure>

            <faultIsolationProcedure applicRefId=""Software2"" id=""tree2"">
                <fault faultCode="" ""/>
                <faultDescr>
                    <descr>This nodes description2</descr>
                </faultDescr>
            </faultIsolationProcedure>
        </faultIsolation>
    </content>
</dmodule>
c:\temp\my\path\file.txt
记住。如果您有这样的文件系统:

<dmodule> 
    <content>
        <faultIsolation>
            <faultIsolationProcedure applicRefId=""Software"" id=""tree1"">
                <fault faultCode="" ""/>
                <faultDescr>
                    <descr>This nodes description</descr>
                </faultDescr>
            </faultIsolationProcedure>

            <faultIsolationProcedure applicRefId=""Software2"" id=""tree2"">
                <fault faultCode="" ""/>
                <faultDescr>
                    <descr>This nodes description2</descr>
                </faultDescr>
            </faultIsolationProcedure>
        </faultIsolation>
    </content>
</dmodule>
c:\temp\my\path\file.txt
您可以这样做:

CD c:\temp\my
您将位于
my
文件夹中,您可以相对地或绝对地引用该文件:

notepad path\file.txt
notepad c:\temp\my\path\file.txt

XPath也不例外;如果你用斜杠开始一个路径,不管当前节点是什么,它都是“从文档根目录”开始的,就像你用
c:\
开始一个文件路径一样,它是从驱动器根目录开始的,不管当前目录是什么,

请截图,以及XML文件的示例转储我已经添加了示例XML,我找不到任何可以附加表单图像的地方@Caius Jardt若要发布屏幕截图,请使用Windows截图工具进行截图,按ctrl c,然后在问题正文的文本编辑器中按ctrl v。因此,我们将把剪贴板上传到imgur,并在正文中插入一个链接。谢谢您的详细解释。这很有效@JenPann对堆栈溢出的人表示感谢的正确方法是接受他们的回答。您可以通过单击答案左侧的复选标记(勾号)来完成此操作。@Jenpen(您也可以单击向上箭头。答案可以勾选和向上投票。任何数量的有用答案都可以向上投票,但只能勾选一个(最适合您的情况)