Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# 获取特定类型的所有子节点不返回任何内容_C#_Xml - Fatal编程技术网

C# 获取特定类型的所有子节点不返回任何内容

C# 获取特定类型的所有子节点不返回任何内容,c#,xml,C#,Xml,我正在尝试从字符串XML节点获取所有PitXML元素 我的问题:当我从节点检索所有Pit元素时,XMLNodeList总是空的。我知道节点确实包含2个Pit元素,因此它应该包含2个节点元素 出什么事了 XmlDocument xdoc = new XmlDocument(); xdoc.Load(xmlFilePath); XmlNodeList xNodes = xdoc.DocumentElement.GetElementsByTagName("string_drainage"

我正在尝试从
字符串
XML节点获取所有
Pit
XML元素

我的问题:当我从节点检索所有
Pit
元素时,XMLNodeList总是空的。我知道节点确实包含2个
Pit
元素,因此它应该包含2个节点元素

出什么事了

  XmlDocument xdoc = new XmlDocument();
  xdoc.Load(xmlFilePath); 
  XmlNodeList xNodes = xdoc.DocumentElement.GetElementsByTagName("string_drainage");

  foreach (XmlNode dStr in xNodes) {
       XmlNodeList pits = dStr.SelectNodes("pit");
       MessageBox.Show("Num: "+pits.Count.ToString(), "Number"); 
       // always outputs "Num: 0"
  }
我使用的示例数据:

<string_drainage>
    <pit>
      <name>MH. </name>
      <ip>0</ip>
      <ratio>0</ratio>
      <x>212908.89268569</x>
      <y>612015.26122586</y>
      <z>80.62414621</z>
    </pit>
</string_drainage>

嗯。
0
0
212908.89268569
612015.26122586
80.62414621
详细数据:

<?xml version="1.0"?>
<xml12d xmlns="http://www.12d.com/schema/xml12d-10.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" language="English" version="1.0" date="2013-08-27" time="16:33:14" xsi:schemaLocation="http://www.12d.com/schema/xml12d-10.0 http://www.12d.com/schema/xml12d-10.0/xml12d.xsd">
  <meta_data>
    <units>
      <metric>
        <linear>metre</linear>
        <area>square metre</area>
        <volume>cubic metre</volume>
        <temperature>celsius</temperature>
        <pressure>millibars</pressure>
        <angular>decimal degrees</angular>
        <direction>decimal degrees</direction>
      </metric>
    </units>
    <application>
      <name>12d Model</name>
      <manufacturer>12d Solutions Pty Ltd</manufacturer>
      <manufacturer_url>www.12d.com</manufacturer_url>
      <application>12d Model 10.0C1j</application>
      <application_build>10.1.10.22</application_build>
      <application_path>C:\Program Files\12d\12dmodel\10.00\nt.x64\12d.exe</application_path>
      <application_date_gmt>24-Jul-2013 02:18:30</application_date_gmt>
      <application_date>24-Jul-2013 12:18:30</application_date>
      <project_name>mjkhjk</project_name>
      <project_guid>{30A05217-706A-41c1-AF53-0D1A0975A5D0}</project_guid>
      <project_folder>C:\12djobs\mjkhjk</project_folder>
      <client>12d Training - NSW</client>
      <dongle>572d471062</dongle>
      <environment/>
      <env4d>C:\12d\10.00\user\env.4d</env4d>
      <user>Sam Zielke-Ryner</user>
      <export_file_name>Tttt.xml</export_file_name>
      <export_date_gmt>27-Aug-2013 06:33:14</export_date_gmt>
      <export_date>27-Aug-2013 16:33:14</export_date>
    </application>
  </meta_data>
  <comments>
    <manufacturer>12d Solutions Pty Ltd</manufacturer>
    <manufacturer_url>www.12d.com</manufacturer_url>
    <application>12d Model 10.0C1j</application>
    <application_build>10.1.10.22</application_build>
    <application_path>C:\Program Files\12d\12dmodel\10.00\nt.x64\12d.exe</application_path>
    <application_date_gmt>24-Jul-2013 02:18:30</application_date_gmt>
    <application_date>24-Jul-2013 12:18:30</application_date>
    <export_file_name>Tttt.xml</export_file_name>
    <export_date_gmt>27-Aug-2013 06:33:14</export_date_gmt>
    <export_date>27-Aug-2013 16:33:14</export_date>
  </comments>
  <string_drainage>
    <name/>
    <time_created>29-Jul-2013 02:02:03</time_created>
    <time_updated>29-Jul-2013 02:02:11</time_updated>
    <outfall>null</outfall>
    <flow_direction>1</flow_direction>
    <use_pit_con_points>false</use_pit_con_points>
    <data_3d>
      <p>212908.89268569 612015.26122586 0</p>
      <p>212715.09268598 612007.24091243 84.20896044</p>
    </data_3d>
    <pit>
      <name>MH. </name>
      <type>CONC COVER</type>
      <road_name/>
      <road_chainage>null</road_chainage>
      <diameter>1.1</diameter>
      <con_point_mode>Points</con_point_mode>
      <floating>true</floating>
      <hgl>null</hgl>
      <chainage>0</chainage>
      <ip>0</ip>
      <ratio>0</ratio>
      <x>212908.89268569</x>
      <y>612015.26122586</y>
      <z>80.62414621</z>
    </pit>
    <pit>
      <name>MH. </name>
      <type>CONC COVER</type>
      <road_name/>
      <road_chainage>null</road_chainage>
      <diameter>1.1</diameter>
      <con_point_mode>Points</con_point_mode>
      <floating>true</floating>
      <hgl>null</hgl>
      <chainage>193.96588699</chainage>
      <ip>1</ip>
      <ratio>0</ratio>
      <x>212715.09268598</x>
      <y>612007.24091243</y>
      <z>84.20896044</z>
    </pit>
    <pipe>
      <name>A</name>
      <type>PVC</type>
      <diameter>0.15</diameter>
      <nominal_diameter>0.15</nominal_diameter>
      <us_level>77.38411559</us_level>
      <ds_level>79.32377446</ds_level>
      <us_hgl>0</us_hgl>
      <ds_hgl>0</ds_hgl>
      <flow_velocity>0</flow_velocity>
      <flow_volume>0</flow_volume>
      <attributes>
        <real>
          <name>nominal diameter</name>
          <value>0.15</value>
        </real>
        <real>
          <name>calculated critical cover chainage</name>
          <value>4.31482574</value>
        </real>
      </attributes>
    </pipe>
  </string_drainage>
</xml12d>

米
平方米
立方米
摄氏度
毫巴
十进制度
十进制度
12d模型
12d解决方案私人有限公司
www.12d.com
12d型10.0C1j
10.1.10.22
C:\ProgramFiles\12d\12dmodel\10.00\nt.x64\12d.exe
2013年7月24日02:18:30
2013年7月24日12:18:30
mjkhjk
{30A05217-706A-41c1-AF53-0D1A0975A5D0}
C:\12djobs\mjkhjk
12d培训-新南威尔士州
5725471062
C:\12d\10.00\user\env.4d
山姆·齐尔克·莱纳
Tttt.xml
2013年8月27日06:33:14
2013年8月27日16:33:14
12d解决方案私人有限公司
www.12d.com
12d型10.0C1j
10.1.10.22
C:\ProgramFiles\12d\12dmodel\10.00\nt.x64\12d.exe
2013年7月24日02:18:30
2013年7月24日12:18:30
Tttt.xml
2013年8月27日06:33:14
2013年8月27日16:33:14
2013年7月29日02:02:03
2013年7月29日02:02:11
无效的
1.
假的
212908.89268569 612015.26122586 0

212715.09268598 612007.24091243 84.20896044

嗯。 混凝土盖 无效的 1.1 要点 真的 无效的 0 0 0 212908.89268569 612015.26122586 80.62414621 嗯。 混凝土盖 无效的 1.1 要点 真的 无效的 193.96588699 1. 0 212715.09268598 612007.24091243 84.20896044 A. 聚氯乙烯 0.15 0.15 77.38411559 79.32377446 0 0 0 0 公称直径 0.15 计算临界覆盖链测长度 4.31482574
我希望这会对您有所帮助

test.xml是xml的副本/粘贴

    static void Main(string[] args)
    {
        XmlDocument xdoc = new XmlDocument();
        xdoc.Load(@"c:\test.xml");
        XmlNodeList xNodes = xdoc.DocumentElement.SelectNodes("pit");
        Console.WriteLine("Num: " + xNodes.Count.ToString());

        foreach (XmlNode dStr in xNodes)
        {
            Console.WriteLine("Name: " + dStr.SelectSingleNode("name").InnerText);
            Console.WriteLine("ip: " + dStr.SelectSingleNode("ip").InnerText);
            Console.WriteLine("ratio: " + dStr.SelectSingleNode("ratio").InnerText);
            Console.WriteLine("X: " + dStr.SelectSingleNode("z").InnerText);
            Console.WriteLine("Y: " + dStr.SelectSingleNode("y").InnerText);
            Console.WriteLine("X: " + dStr.SelectSingleNode("x").InnerText);
        }
        Console.Read();
    }

我希望这对你有帮助

test.xml是xml的副本/粘贴

    static void Main(string[] args)
    {
        XmlDocument xdoc = new XmlDocument();
        xdoc.Load(@"c:\test.xml");
        XmlNodeList xNodes = xdoc.DocumentElement.SelectNodes("pit");
        Console.WriteLine("Num: " + xNodes.Count.ToString());

        foreach (XmlNode dStr in xNodes)
        {
            Console.WriteLine("Name: " + dStr.SelectSingleNode("name").InnerText);
            Console.WriteLine("ip: " + dStr.SelectSingleNode("ip").InnerText);
            Console.WriteLine("ratio: " + dStr.SelectSingleNode("ratio").InnerText);
            Console.WriteLine("X: " + dStr.SelectSingleNode("z").InnerText);
            Console.WriteLine("Y: " + dStr.SelectSingleNode("y").InnerText);
            Console.WriteLine("X: " + dStr.SelectSingleNode("x").InnerText);
        }
        Console.Read();
    }

也许最好使用Xmldocument的XmlNode和XmlSingleNode

也许最好使用Xmldocument的XmlNode和XmlSingleNode

调用SelectNodes需要向其中添加默认名称空间

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xdoc.NameTable);
nsmgr.AddNamespace("x", xdoc.DocumentElement.NamespaceURI);
XmlNodeList pits = dStr.SelectNodes("x:pit");
请参阅位于的帮助


我用于xml文件的一个技巧是在我使用的xml文件中始终使用别名名称空间。否则很难编写对它们的xpath引用

对SelectNodes的调用需要添加默认名称空间

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xdoc.NameTable);
nsmgr.AddNamespace("x", xdoc.DocumentElement.NamespaceURI);
XmlNodeList pits = dStr.SelectNodes("x:pit");
请参阅位于的帮助


我用于xml文件的一个技巧是在我使用的xml文件中始终使用别名名称空间。否则很难编写对它们的xpath引用

这里少了一块拼图。这就是xml文件的全部内容吗?这是您真正的根节点吗?通常,这些问题与启动搜索时节点不正确有关@user1正确地指出,如果示例xml不是完整的xml,那么您的代码将基于不正确的节点。事实上,错误出现在代码的前面,xNodes my没有元素。@user1感谢您的评论。有关完整的xml文件,请参阅更新contents@Jason我已经通过打印出dStr的内部XML来测试是否具有正确的(仅(&only)字符串。它确实是正确的节点。@vhspeceros做了一个测试,但它不是空的。这里缺少一些拼图。这就是xml文件的全部内容吗?这是您真正的根节点吗?通常,这些问题与启动搜索时节点不正确有关@user1正确地指出,如果示例xml不是完整的xml,那么您的代码将基于不正确的节点。事实上,错误出现在代码的前面,xNodes my没有元素。@user1感谢您的评论。有关完整的xml文件,请参阅更新contents@Jason我已经通过打印出dStr的内部XML来测试是否具有正确的(仅(&only)字符串。它确实是正确的节点。@VhsPiceros做了一个测试,但它不是空的。此代码的问题是它将选择所有的坑,而不仅仅是特定
string\u排水
节点内的坑。此代码的问题是它将选择所有坑,而不仅仅是特定
string\u排水
节点内的坑