Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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
C# 读取xml文件时出现问题_C#_Asp.net_Xml - Fatal编程技术网

C# 读取xml文件时出现问题

C# 读取xml文件时出现问题,c#,asp.net,xml,C#,Asp.net,Xml,我在读取和处理xml文件时遇到了一个问题,我现在无法解决这个问题。 xml具有以下结构: <root> <test id="1"> <a></a> <b></b> <c></c> </test> <test id="2"> <a></a> <b></b> <c>

我在读取和处理xml文件时遇到了一个问题,我现在无法解决这个问题。 xml具有以下结构:

<root>
  <test id="1">
    <a></a>
    <b></b>
    <c></c>
  </test>
  <test id="2">
    <a></a>
    <b></b>
    <c></c>
  </test>
  <test id="3">
    <a></a>
    <b></b>
    <c></c>
  </test>
</root>



XmlDocument Doc; int currentid=1; 


XmlNode currentlyselectedtestnode =
Doc.SelectNodes("//test[@id = '" +
currentid.ToString() + "']");

string a = currentlyselectedtestnode.SelectSingleNode("//a");    
string b = currentlyselectedtestnode.SelectSingleNode("//b");   
string c = currentlyselectedtestnode.SelectSingleNode("//c");

xml文档文档;int currentid=1;
XmlNode currentlyselectedtestnode=
Doc.SelectNodes(“//test[@id=”)+
currentid.ToString()+“']”;
字符串a=currentlyselectedtestnode.SelectSingleNode(“//a”);
字符串b=currentlyselectedtestnode.SelectSingleNode(“//b”);
字符串c=currentlyselectedtestnode.SelectSingleNode(“//c”);
不幸的是,“currentlyselectedtestnode.SelectSingleNode(//a”)”将读取所有“a”-节点,而不仅仅是属于id为1的测试节点的节点。为什么? 以某种方式当前选择TestNode。选择SingleNode(//a);就像我写Doc.SelectSingleNode(“//a”)


为什么?!如何使其仅读取特定测试节点的子节点?ectedtestnode.SelectSingleNode(“//c”)

在XPath中使用
//a
时,选择文档中的所有
a
节点

如果需要直接子节点,则需要使用
currentlyselectedtestnode。选择SingleNode(“a”)

有关学校,请参阅:

/
-从当前节点中选择与所选内容匹配的文档中的节点,无论它们位于何处


您可以使用
//a
选择当前节点下的所有
a
节点。这将选择当前节点的所有子
a
节点,无论它们嵌套的深度如何。

在XPath中使用
/a
时,您将选择文档中的所有
a
节点

如果需要直接子节点,则需要使用
currentlyselectedtestnode。选择SingleNode(“a”)

有关学校,请参阅:

/
-从当前节点中选择与所选内容匹配的文档中的节点,无论它们位于何处


您可以使用
//a
选择当前节点下的所有
a
节点。这将选择当前节点的所有子
a
节点,无论它们嵌套的深度有多深。

不要忘记标记代码,以便正确显示。:)使用编辑器上的“代码”按钮执行此操作,或者我相信使用四个空格进行缩进。不要忘记标记代码,以便正确显示。:)使用编辑器上的“代码”按钮执行此操作,或者我相信通过缩进四个空格来执行。或者,如果它们可以深入嵌套在当前节点中,则可以使用
//a
。哦,这使我更接近解决方案。为什么我使用XmlNode currentlyselectedtestnode=Doc.SelectNodes(“//test[@id='”+currentid.ToString()+”)会有区别;或者XmlNode currentlyselectedtestnode=Doc.SelectNodes(“test[@id=”“+currentlid.ToString()+”]);它不应该选择同一个节点吗?当我执行后一个操作时,我得到一个“System.NullReferenceException:对象引用未设置为对象的实例”。@dll32-在第二个XPath中,您试图获取一个直接的
测试
子节点。如果一个不存在,
NullReferenceException
。在第一个示例中,您选择了文档中具有
id
属性的所有
test
节点。当然,但在我的id=“1”示例中,两个示例应获得相同的节点。可能在其他地方有错误。@dll32-根节点在文档中称为
root
。您可以使用XPath开头的
/
或按名称引用它。这应该可以使用
/root/test[@id='“+currentid.ToString()+”]
或者,如果它们可以深入嵌套在当前节点中,您可以使用
//a
。哦,这让我更接近解决方案。为什么我使用XmlNode currentlyselectedtestnode=Doc.SelectNodes(“//test[@id='”+currentid.ToString()+”)会有区别;或者XmlNode currentlyselectedtestnode=Doc.SelectNodes(“test[@id=”“+currentlid.ToString()+”]);它不应该选择同一个节点吗?当我执行后一个操作时,我得到一个“System.NullReferenceException:对象引用未设置为对象的实例”。@dll32-在第二个XPath中,您试图获取一个直接的
测试
子节点。如果一个不存在,
NullReferenceException
。在第一个示例中,您选择了文档中具有
id
属性的所有
test
节点。当然,但在我的id=“1”示例中,两个示例应获得相同的节点。可能在其他地方有错误。@dll32-根节点在文档中称为
root
。您可以使用XPath开头的
/
或按名称引用它。这应该可以工作
/root/test[@id='“+currentid.ToString()+”]