从C#中的XML中提取数据

时间:2016-12-23 03:18:49

标签: c# xml xml-parsing

我在C#中有字符串,其中包含以下内容

  responseString = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<lab:labs xmlns:lab=\"http://njjhjhjh/ri/lab\">\n    <lab uri=\"https://dsdsdsds.org/api/v2/labs/1\">\n        <name>Administrative Lab</name>\n    </lab>\n</lab:labs>\n"

我希望提取uri值https://dsdsdsds.org/api/v2/labs/1并将其存储在字符串

           string xmlString =responseString.Replace("lab:labs>", "labs>");
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlString);
            XmlNodeList nodes = doc.SelectNodes("labs//lab");
            if (nodes != null && nodes.Count > 0)
            {
                XmlNode node = nodes[0];
                if (node.Attributes["uri"] != null)
                {
                    string return_uri = node.Attributes["uri"].Value.ToString();

                }
            }

但是上面的代码会抛出{"The 'lab:labs' start tag on line 2 position 2 does not match the end tag of 'labs'. Line 6, position 3."}之类的错误。是否有一种获得uri值的简单方法

2 个答案:

答案 0 :(得分:0)

试试这个..

var doc = XDocument.Parse(responseString);
var result = doc.Descendants().First(d => d.Name=="lab").Attribute("uri").Value;

答案 1 :(得分:0)

这可能会为你做到这一点

var urival = xdoc.Descendants("lab").Attributes("uri");