Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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语言中的数据?_C#_Xml_Csv - Fatal编程技术网

C# 如何解析XML以获取c语言中的数据?

C# 如何解析XML以获取c语言中的数据?,c#,xml,csv,C#,Xml,Csv,我有一个xml文件,我想将信息写入csv文件 我试图解析xml以获取字段和数据并写入csv文件。到目前为止,我已经能够解析数据,以获得与 节点“entry”下的“title”和“id”,但我正在尝试解析节点“id”信息下的数据 <?xml version="1.0" encoding="utf-8" standalone="yes"?> <feed xml:base="http://google.com/en-US/syndicate/" xmlns:d="http:

我有一个xml文件,我想将信息写入csv文件

我试图解析xml以获取字段和数据并写入csv文件。到目前为止,我已经能够解析数据,以获得与 节点“entry”下的“title”和“id”,但我正在尝试解析节点“id”信息下的数据

 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   <feed xml:base="http://google.com/en-US/syndicate/"  xmlns:d="http://schemas.google.com/ado/2007/08/dataservices" xmlns:m="http://schemas.giooglt.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
     <title type="text">Partners</title>
     <id>http://googlre.com/en-US/syndicate/Partners</id>
     <updated>2014-01-16T21:33:20Z</updated>
    < link rel="self" title="Partners" href="Partners" />
      <entry>
    <id>http://pinpoint.microsoft.com/en-US/syndicate/Partners('4555')</id>
   <title type="text">M55p; Co</title>
   <summary type="text">cccc is a Certified Partner, reseller, and implementer of 
   Key industries we work with include:
    •   Financial services
     •   Professional services
     •   Media / publishing


    By focusing on mid-market to enterprise clients, 
 </summary>
   <published>2009-07-21T14:23:50-07:00</published>
   <updated>2013-11-22T15:00:46-08:00</updated>
    <author>
    <name>google chrome</name>
    <uri>http://google.com/</uri>
    <email>retee@gmail.com</email>
   </author>
  <link rel="edit" title="Partner" href="Partners('4255')" />
   <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Links" type="application/atom+xml;type=feed" title="Links" href="Partners('4559')/Links">
   <m:inline>
     <feed>
   <title type="text">Links</title>
  <id>http://google.com/('429')/Links</id>
  <updated>2014-01-16T21:33:20Z</updated>
  <link rel="self" title="Links" href="Partners('4ff')/Links" />
  <entry>
    <id>http://ryryr.com/en-US/syndicate/Links('ufufr')</id>
    <title type="text">
    </title>
    <updated>2014-01-16T21:33:20Z</updated>
    <author>
      <name />
    </author>
    <link rel="edit" title="Link" href="Links('partnerpage')" />
    <category term="google.Commerce.ferrr.Syndicate.V2010_05.Link" scheme="http://schemas.frrr.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:Type>pgooglrpartnerpage</d:Type>
        <d:Description>google Partner Page</d:Description>
        <d:Url>http://googlgt.com/en-US/PartnerDetails.aspx?PartnerId=42555&amp;wt.mc_id=66ttet</d:Url>
      </m:properties>
    </content>
  </entry>
  </m:inline>
  </entry>
  <entry>
    <id>http://pinpoint.microsoft.com/en-US/syndicate/Partners('4555')</id>
   <title type="text">M55p; Co</title>
   <summary type="text">cccc is a Certified Partner, reseller, and implementer of 
   Key industries we work with include:
    •   Financial services
     •   Professional services
     •   Media / publishing


    By focusing on mid-market to enterprise clients, 
 </summary>
   <published>2009-07-21T14:23:50-07:00</published>
   <updated>2013-11-22T15:00:46-08:00</updated>
    <author>
    <name>google chrome</name>
    <uri>http://google.com/</uri>
    <email>retee@gmail.com</email>
   </author>
  <link rel="edit" title="Partner" href="Partners('4255')" />
   <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Links" type="application/atom+xml;type=feed" title="Links" href="Partners('4559')/Links">
   <m:inline>
     <feed>
   <title type="text">Links</title>
  <id>http://google.com/('429')/Links</id>
  <updated>2014-01-16T21:33:20Z</updated>
  <link rel="self" title="Links" href="Partners('4ff')/Links" />
  <entry>
    <id>http://ryryr.com/en-US/syndicate/Links('ufufr')</id>
    <title type="text">
    </title>
    <updated>2014-01-16T21:33:20Z</updated>
    <author>
      <name />
    </author>
    <link rel="edit" title="Link" href="Links('partnerpage')" />
    <category term="google.Commerce.ferrr.Syndicate.V2010_05.Link" scheme="http://schemas.frrr.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:Type>pgooglrpartnerpage</d:Type>
        <d:Description>google Partner Page</d:Description>
        <d:Url>http://googlgt.com/en-US/PartnerDetails.aspx?PartnerId=42555&amp;wt.mc_id=66ttet</d:Url>
      </m:properties>
    </content>
  </entry>
  </m:inline>
  </entry>
  </feed>
我试图像这样解析数据。 字符串cty=node[link/m:inline/de:feed/de:id].InnerText

但是错误产生了。 对象引用未设置为对象的实例


xml有多个条目,格式相似。C新手如何获取信息并将其写入CSV文件。请帮助我。

首先,您的xml格式不正确。这需要纠正。其次,我不确定您正试图使用查询链接/m:inline/de:feed/de:id返回哪个节点

话虽如此,您的节点[link/m:inline/de:feed/de:id]无效,因此它没有设置为您期望的XmlNode对象。这是因为XmlNode项需要节点的名称,而不是xpath查询。如果要传递xpath查询,请使用SelectSingleNode。大概是这样的:

foreach (XmlNode node in nodes)
{
    string titl = node["title"].InnerText;
    string ide = node["id"].InnerText;
    string cty;
    var ctyNode = node.SelectSingleNode("link/m:inline/de:feed/de:id");
    if (ctyNode != null)
    {
        cty = ctyNode.InnerText
    }
    Debug.WriteLine("Data :" + titl+"ID :"+ide);
}

但是,如果有多个条目,如-blblbl,那么我将如何获取数据,因为上面修改的步骤现在只返回第一个“条目”中的数据,因为您的XML格式不正确,很难判断您需要什么。首先要做的是修复你的xml。我认为新的编辑会给你一个更好的想法。请参考新的帖子。你的xml仍然无效。您可以使用在线xml验证器来检查它,例如,任何xml解析方法都需要首先有有效的xml进行解析。
foreach (XmlNode node in nodes)
{
    string titl = node["title"].InnerText;
    string ide = node["id"].InnerText;
    string cty;
    var ctyNode = node.SelectSingleNode("link/m:inline/de:feed/de:id");
    if (ctyNode != null)
    {
        cty = ctyNode.InnerText
    }
    Debug.WriteLine("Data :" + titl+"ID :"+ide);
}