2013-07-17 176 views
1

我要分析此XML,并获得手机号码从XML获取价值?

<Result> 
    <text_message> 
    <id>4394</id> 
    <message>2</message> 
    <time>1373998420</time> 
    <message_phone> 
     <cellphone>09102805755</cellphone> 
    </message_phone> 
    </text_message> 
</Result> 

我的代码是:这Rows[0][3]

int Num; 
XDocument doc = XDocument.Parse(sms.InboxCheck(authsms, "1", "1", "0")); 
doc.Save(Server.MapPath(".") + "\\xmlfolder\\xmlfile2.xml"); 
ds.ReadXml(Server.MapPath(".") + "\\xmlfolder\\xmlfile2.xml"); 
Num = Convert.ToInt32(ds.Tables["text_message"].Rows[0][3].ToString()); 
Label1.Text= Num.ToString(); 

价值0

我如何可以获取手机号码?

+4

您试图将XML读入数据集而不将其解析为XDocument的任何特定原因? –

回答

4

如何继续利用的XDocument类?

XDocument doc = XDocument.Load(sms.InboxCheck(authsms, "1", "1", "0")); 
var cellphone = doc.Root.Element.Elements("message_phone").First().Element.Value 
+0

XDocument没有这样的方法。 我的意思是RootElement方法。 – user2591714

+0

@ user2591714,我的道歉,它是'Root'。请参阅我的编辑。 –

+0

可以将第2行简化为'var cellphone = doc.Descendents(“cellphone”)。First()。Value' –

3

做这样的事情

int num = int.parse(doc.Descendants.("cellphone").Single().Value); 

或更好,但

string num = doc.Descendants.("cellphone").Single().Value; 
+0

更改为.. string num = doc.Descendants(“cellphone”)。Single()。Value; – Pankaj

0

您是否考虑过使用序列化?

您可以将您的xml映射到数据结构(类)并读取它或/并通过XmlSerializerDataContractSerializer写入它。

0

我会用XmlDocument来代替。

XmlDocument doc = new XmlDocument(); 
doc.Load("myFile.xml"); 
XmlNode phone = doc.SelectSingleNode("/Result/text_message/message_phone/cellphone"); 
string number = phone.InnextText;