XDocument Parse- Element("ServiceResponse").Element("Message").Value返回null [英] XDocument Parse- Element("ServiceResponse").Element("Message").Value returns null

查看:69
本文介绍了XDocument Parse- Element("ServiceResponse").Element("Message").Value返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<?xml version="1.0" encoding="utf-8" ?>
<ServiceResponse xmlns:xsd="http://www.w3.org/"

xmlns:xsi="http://www.w3.org/"

xmlns="http://www.dealerlink.us/"><Response>REJECTED</Response>
<Message>ZIP OUT OF AREA</Message>
</ServiceResponse>



我有上述XML,我想在字符串"msg"中输入值"ZIP OUT OF AREA"

为此,我编写了如下代码:



I have XML as above, I want value "ZIP OUT OF AREA" in string "msg"

For that I wrote a code as below:

XDocument XDOC = XDocument.Parse(xmlstring);
string msg=XDOC.Element("ServiceResponse").Element("Message").Value;


但是字符串返回null.

请帮忙,我现在被困住了.
谢谢.


but string returns null.

Please help, I am stuck at this point.
thanks.

推荐答案

您遇到了问题,因为您试图在不指定该名称空间的情况下读取名称空间中的元素.

XML的最后一个属性xmlns ="http://www.dealerlink.us"将文档的默认命名空间定义为http://www.dealerlink.us.

您可以通过使用以下名称空间为元素名称添加前缀来解决此问题:
You''re running into problems because you''re trying to read elements in a namespace without specifying that namespace.

The last attribute of the XML, xmlns="http://www.dealerlink.us" defines the default namespace of the document as http://www.dealerlink.us.

You can fix that by prefixing your element names with the namespace like this:
string xmlstring = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><ServiceResponse xmlns:xsd=\"http://www.w3.org/\" xmlns:xsi=\"http://www.w3.org/\" xmlns=\"http://www.dealerlink.us/\"><Response>REJECTED</Response><Message>ZIP OUT OF AREA</Message></ServiceResponse>";

XNamespace ns = "http://www.dealerlink.us/";
XDocument XDOC = XDocument.Parse(xmlstring);

string msg = XDOC.Element(ns + "ServiceResponse").Element(ns + "Message").Value;



希望这会有所帮助,
弗雷德里克·博纳德(Fredrik Bornander)



Hope this helps,
Fredrik Bornander


/////////////////////test
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControls;
使用System.Data;

公共局部类Default2:System.Web.UI.Page
{
受保护的void Page_Load(对象发送者,EventArgs e)
{

}
受保护的void Button1_Click(对象发送者,EventArgs e)
{
DateTime sDate = Convert.ToDateTime(TextBox1.Text);
DateTime eDate = Convert.ToDateTime(TextBox2.Text);
TimeSpan tSpan = eDate-sDate;
int days = Convert.ToInt32(tSpan.TotalDays);
DataTable dt =新的DataTable(日期");
dt.Columns.Add("DatesCol",typeof(System.DateTime));
DataRow dr;
int pm = sDate.Month;
int py = sDate.Year;
int nth = 0;
for(int i = 0; i& lt; = days; i ++)
{
int month = sDate.Month;
int年= sDate.Year;
如果(月==下午& amp;年== py)
{
如果(sDate.DayOfWeek.ToString()== DropDownList1.SelectedValue)
{
nth = nth + 1;
}
}
其他
{
nth = 0;
}
if(sDate.DayOfWeek.ToString()== DropDownList1.SelectedValue&& amp; amp; amp; amp; amp; amp; nth == Convert.ToInt32(DropDownList2.SelectedValue))
{
dr = dt.NewRow();
dr ["DatesCol"] = sDate;
dt.Rows.Add(dr);
}
sDate = sDate.AddDays(1);
pm =月;
py =年;
}
GridView1.DataSource = dt;
GridView1.DataBind();
Response.Write(GridView1.Rows.Count.ToString());
}
}
//////////////////////test
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
DateTime sDate = Convert.ToDateTime(TextBox1.Text);
DateTime eDate = Convert.ToDateTime(TextBox2.Text);
TimeSpan tSpan = eDate - sDate;
int days = Convert.ToInt32(tSpan.TotalDays);
DataTable dt = new DataTable("Dates");
dt.Columns.Add("DatesCol", typeof(System.DateTime));
DataRow dr;
int pm = sDate.Month;
int py = sDate.Year;
int nth = 0;
for (int i = 0; i &lt;= days; i++)
{
int month = sDate.Month;
int year = sDate.Year;
if (month == pm &amp;&amp; year == py)
{
if (sDate.DayOfWeek.ToString() == DropDownList1.SelectedValue)
{
nth = nth + 1;
}
}
else
{
nth = 0;
}
if (sDate.DayOfWeek.ToString() == DropDownList1.SelectedValue &amp;&amp; nth == Convert.ToInt32(DropDownList2.SelectedValue))
{
dr = dt.NewRow();
dr["DatesCol"] = sDate;
dt.Rows.Add(dr);
}
sDate = sDate.AddDays(1);
pm = month;
py = year;
}
GridView1.DataSource = dt;
GridView1.DataBind();
Response.Write(GridView1.Rows.Count.ToString());
}
}


这篇关于XDocument Parse- Element("ServiceResponse").Element("Message").Value返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆