我正在使用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 > 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返回,以便我可以使用它?
感谢您帮助我
答案 0 :(得分:0)
您可以直接从文档的后代定位ContextValue
。然后从那里你可以从中获取元素,并获得它的价值。
XDocument doc = XDocument.Load("foo.xml");
var element = doc.Descendants("ContextValue").FirstOrDefault();
var value = element.Value;
Console.WriteLine(value); // -1
请注意,您的xml示例格式错误 - 不确定您是否打算这样做。