获取XML元素的值作为字符串

时间:2018-05-04 01:42:32

标签: c# asp.net xml soap linq-to-xml

我正在使用XDocument来加载xml并尝试检索该值(例如&#34; -1&#34;在&#34; RCode&#34; <ContextValue>元素内。

XML:

<?xml version="1.0" encoding="UTF-8"?>
<dsContext xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ttContext>
    <ContextName>RCode</ContextName>
    <ContextValue>-1</ContextValue>
  </ttContext>
</dsContext>
 <?xml version="1.0" encoding="UTF-8"?>
<dsMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Messages>
    <MessageNum>CA9001</MessageNum>
    <MessageText>ERROR: End date &gt; Start date. (CA:25)</MessageText>
  </Messages>
</dsMessage>

我试过以下

XDocument x = XDocument.Parse(xmlstring);
if (x.Root.Elements().Any())
{

string id = "RCode";

XElement codevalue = (from xml2 in x.Descendants("dsContext").Descendants("ttContext") 
                    where xml2.Element("ContextName").Value == id
                    select xml2).FirstOrDefault();
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + codevalue.ToString() + "');", true);
}

它返回&#34;对象引用未设置为对象的实例。&#34; 如何将值作为字符串或int返回,以便我可以使用它?

感谢您帮助我

1 个答案:

答案 0 :(得分:0)

您可以直接从文档的后代定位ContextValue。然后从那里你可以从中获取元素,并获得它的价值。

XDocument doc = XDocument.Load("foo.xml");
var element = doc.Descendants("ContextValue").FirstOrDefault();
var value = element.Value;
Console.WriteLine(value); // -1

请注意,您的xml示例格式错误 - 不确定您是否打算这样做。