C#Open XML并获得价值

时间:2014-03-19 15:05:02

标签: c# xml

我正在打开一个XML文件,需要从中获取一个特定的值。我读到了记录所有者,然后我希望得到它的价值。

这是我到目前为止所提出的,其中n是xml文件的路径

public void ReadXMLFile(string n)
{

    if (Path.GetExtension(n) == ".xml")
    {

        // XML File found
        XmlDocument doc = new XmlDocument();

        doc.Load(n);
        string xmlcontents = doc.InnerXml;

        using (XmlReader reader = XmlReader.Create(new StringReader(xmlcontents)))
        {

            reader.ReadToFollowing("recordingowner");
            string t = reader.Value;

            Console.WriteLine(t);

        }

    }

}

但是t不包含任何内容。这是XML文件

<recording>
<dataformat>audio</dataformat>
<starttime>2014-03-19 11:52:42:000 +0100</starttime>
<endtime>2014-03-19 11:58:15:000 +0100</endtime>
<nostart>false</nostart>
<noend>false</noend>
<recordingtype>stnbulk</recordingtype>
<recordingline/>
<servicename>1000</servicename>
<servicenumber/>
<deliberatebreak>0</deliberatebreak>
<calldirection>Incoming</calldirection>
<filename>66633769853.wav</filename>
<otherinum>0</otherinum>
<callparty>1</callparty>
<recordingowners>
<recordingowner>411111111</recordingowner>
</recordingowners>
<parties>
<party id="1">
<number>0000</number>
<pstarttime>2014-03-19 11:58:15:982 +0100</pstarttime>
<pendtime>2014-03-19 11:58:15:982 +0100</pendtime>
</recording>

欢迎任何帮助!

3 个答案:

答案 0 :(得分:1)

两件事

1)您提供的XML无效,因为其缺席的聚会和派对的结束标记

2)使用以下来替换字符串t = reader.Value;同 string t = reader.ReadElementString();

        // XML File found
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(val);

        string xmlcontents = doc.InnerXml;

        using (XmlReader reader = XmlReader.Create(new StringReader(xmlcontents)))
        {

            reader.ReadToFollowing("recordingowner");
            string t = reader.ReadElementString();

            Console.WriteLine(t);

        }

答案 1 :(得分:0)

reader.ReadElementContentAsString();

修好了

答案 2 :(得分:0)

我可能会这样做(但确实需要有效的XML)

var t = XDocument.Load(n)
    .Element("recording")
    .Elements("recordingowners")
    .First()
    .Element("recordingowner")
    .Value