C# 在c中解析具有cData的xml响应文本#

C# 在c中解析具有cData的xml响应文本#,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我从web服务得到xml格式的响应,数据在xml节点的cData部分中。现在,当我尝试提取节点值,然后使用cdata文本获取值时。如何删除此项并在cdata中获取文本。请告诉我最好的方法。现在写我正在使用正则表达式从结果值中删除cdata。提前谢谢。![!CDATA[Xyz]] <ResumeParserData> <ResumeFileName><![CDATA[]]></ResumeFileName> <ParsingDa

我从web服务得到xml格式的响应,数据在xml节点的cData部分中。现在,当我尝试提取节点值,然后使用cdata文本获取值时。如何删除此项并在cdata中获取文本。请告诉我最好的方法。现在写我正在使用正则表达式从结果值中删除cdata。提前谢谢。![!CDATA[Xyz]]

<ResumeParserData>
    <ResumeFileName><![CDATA[]]></ResumeFileName>
    <ParsingDate><![CDATA[3/29/2012 1:37:33 AM]]></ParsingDate>
    <TitleName><![CDATA[]]></TitleName>
    <FirstName><![CDATA[abc]]></FirstName>
    <Middlename><![CDATA[Kr]]></Middlename>
    <LastName><![CDATA[abc]]></LastName>
    <Email><![CDATA[xyz@gmail.com]]></Email>
    <Phone><![CDATA[+91 8527502445]]></Phone>
</ResumeParserData>

现在我正在使用正则表达式从结果值中删除cdata

首先,我会停止使用正则表达式来解析XML

使用XMLAPI—例如,LINQtoXML是可爱的。这应该可以让您透明地看到文本,而不必知道它曾经出现在CDATA区域中,除非您真的想知道。例如,对于这样的XML文件:

<parent>
  <child>
    <![CDATA[Foo]]>
  </child>
</parent>
using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        var doc = XDocument.Load("test.xml");
        var child = doc.Root.Element("child");
        var text = child.Value;
        Console.WriteLine("Text: {0}", text);
    }
}
编辑:对上面的代码稍作更改:

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        var doc = XDocument.Load("test.xml");
        foreach (var child in doc.Root.Elements())
        {
            Console.WriteLine("{0}: {1}",
                              child.Name, child.Value);
        }
    }
}
。。。当我在问题中的XML上运行时,我得到:

ResumeFileName:
ParsingDate: 3/29/2012 1:37:33 AM
TitleName:
FirstName: abc
Middlename: Kr
LastName: abc
Email: xyz@gmail.com
Phone: +91 8527502445

--@Anu-你能给我们看看你目前用来解析它的代码吗?显示xml数据很好,但如果您不向我们显示您正在尝试的内容,我们无法帮助您调试cdata问题:)但我的文本中仍然有cdata。@Anu:很难知道您做错了什么,因为您没有用您现在尝试的内容更新您的问题。@Anu-如果有帮助,因为您提到这是一个web响应,如果您已经有了字符串,您将使用XDocument.Parse(Load用于从文件加载,如Jon所示)@JamesManning:或
,这更适合web响应:
XDocument.Load(webResponse.GetResponseStream())
代码abv正在工作,但当我尝试使用actual时失败了。当我在cdata之前和之后看到我的回复为文本时,这是不是就是因为这个原因呢![CDATA[]![CDATA[3/29/2012 3:33:07 AM]![CDATA[]![CDATA[xyz]]![CDATA[Kr]]![CDATA[abc]]![CDATA[xyz@gmail.com]] ![CDATA[+91 123456789]]