我想阅读此XML,但它只给我“对象引用未设置为对象的实例。
XDocument doc = XDocument.Parse(responseString);
string valueX = doc.Root.Element("reponse").Element("point").Element("x").Value;
string valueY = doc.Root.Element("reponse").Element("point").Element("y").Value;
Console.WriteLine("TEST");
Console.WriteLine("Timb East" + valueX);
Console.WriteLine("Timb North" + valueY);
这是我的responseString XML示例,我想取X和Y的值。
<reponse><point><x>12557735.513928</x><y>5500887.2196169</y><projection>EPSG::29873</projection></point></reponse>
有人能给我一个提示这里出了什么问题吗?谢谢。
编辑:将响应拼写固定为响应。
答案 0 :(得分:0)
有些事情不是您想像的
对Element
的任何呼叫都可能返回null
XContainer.Element(XName) Method
与指定XName匹配的XElement,或者为null。
如果不确定,请使用null conditional operator
string valueX = doc.Root.Element("response")?.Element("point")?.Element("x")?.Value;
但是,很有可能它没有按您期望的那样解析,或者数据不是您期望的
答案 1 :(得分:0)
如果您像下面那样更改代码以使用GetElementsByTagName()
类型的XmlDocument
方法怎么办
string msg = "<response><point><x>12557735.513928</x><y>5500887.2196169</y><projection>EPSG::29873</projection></point></response>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(msg);
var valueX = doc.GetElementsByTagName("x")[0].InnerText;
string valueY = doc.GetElementsByTagName("y")[0].InnerText;
Console.WriteLine("TEST");
Console.WriteLine("Timb East" + valueX);
Console.WriteLine("Timb North" + valueY);
答案 2 :(得分:0)
两个问题,都与如何访问根元素有关:
XML中的根元素名称与您的代码期望的根元素名称之间存在不匹配(拼写不一致)。
XML包含根元素<reponse>
(拼写错误),但是您的c#代码使用"response"
(拼写正确)。
您需要修复代码和XML根元素名称,以使其一致。
这样做的时候
doc.Root.Element("response")...
您正在尝试访问XML文档根元素的名为<response>
的子元素。但是<response>
(或<reponse>
)已经是根元素,并且没有这样的子元素。因此,您需要执行以下操作:
var valueX = doc.Root.Element("point").Element("x").Value;
或
var valueX = doc.Element("reponse").Element("point").Element("x").Value;
(即doc.Root
和doc.Element("reponse")
在做同样的事情,即返回根元素,因此不需要同时执行这两项。)
提琴here。
答案 3 :(得分:0)
假设xml仅包含一个.chat {
display: none
}
.menu.open {
color: red;
font-weight: bold;
}
.chat.open {
display: block
}
和<x>
节点,则可以尝试以下代码
<y>