[英]xml document dont read string to xml
大家好,我正在嘗試訪問 XML 中的指定值。 但是我的 POST 請求以這種格式將其作為字符串返回:
string smsList = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<response>\n\t<Count>2</Count>\n\t<Messages>\n\t\t<Message>\n\t\t\t<Smstat>0</Smstat>\n\t\t\t<Index>20001</Index>\n\t\t\t<Phone>+number</Phone>\n\t\t\t<Content>Test4</Content>\n\t\t\t<Date>2021-12-11 14:24:23</Date>\n\t\t\t<Sca>+number</Sca>\n\t\t\t<SaveType>4</SaveType>\n\t\t\t<Priority>0</Priority>\n\t\t\t<SmsType>1</SmsType>\n\t\t</Message>\n\t\t<Message>\n\t\t\t<Smstat>0</Smstat>\n\t\t\t<Index>20000</Index>\n\t\t\t<Phone>+number</Phone>\n\t\t\t<Content>Test3</Content>\n\t\t\t<Date>2021-12-11 14:02:48</Date>\n\t\t\t<Sca>+number</Sca>\n\t\t\t<SaveType>4</SaveType>\n\t\t\t<Priority>0</Priority>\n\t\t\t<SmsType>1</SmsType>\n\t\t</Message>\n\t</Messages>\n</response>"
smsList = smsList.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "");
smsList = smsList.Replace("\n", "");
smsList = smsList.Replace("\t", "");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(smsList);
但問題是我測試了多重變體以訪問屬性消息/消息,但它什么也沒返回。
嘗試這個:
using System.Xml;
using System.Xml.Linq;
using System.Linq;
和
var xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<response>\n\t<Count>2</Count>\n\t<Messages>\n\t\t<Message>\n\t\t\t<Smstat>0</Smstat>\n\t\t\t<Index>20001</Index>\n\t\t\t<Phone>+number</Phone>\n\t\t\t<Content>Test4</Content>\n\t\t\t<Date>2021-12-11 14:24:23</Date>\n\t\t\t<Sca>+number</Sca>\n\t\t\t<SaveType>4</SaveType>\n\t\t\t<Priority>0</Priority>\n\t\t\t<SmsType>1</SmsType>\n\t\t</Message>\n\t\t<Message>\n\t\t\t<Smstat>0</Smstat>\n\t\t\t<Index>20000</Index>\n\t\t\t<Phone>+number</Phone>\n\t\t\t<Content>Test3</Content>\n\t\t\t<Date>2021-12-11 14:02:48</Date>\n\t\t\t<Sca>+number</Sca>\n\t\t\t<SaveType>4</SaveType>\n\t\t\t<Priority>0</Priority>\n\t\t\t<SmsType>1</SmsType>\n\t\t</Message>\n\t</Messages>\n</response>";
var document = XDocument.Parse(xmlStr);
var messages = document.Root.Descendants("Message").Select(x => new string[]
{
x.Descendants("Smstat").FirstOrDefault().Value,
x.Descendants("Index").FirstOrDefault().Value,
x.Descendants("Phone").FirstOrDefault().Value.ToString(),
x.Descendants("Content").FirstOrDefault().Value,
x.Descendants("Date").FirstOrDefault().Value,
x.Descendants("Sca").FirstOrDefault().Value,
x.Descendants("SaveType").FirstOrDefault().Value,
x.Descendants("Priority").FirstOrDefault().Value,
x.Descendants("SmsType").FirstOrDefault().Value
}).ToList();
Console.WriteLine("Smstat;Index;Phone;Content;Date;Sca;SaveType;Priority;SmsType");
foreach (var msg in messages)
{
Console.WriteLine(String.Join(";", msg));
}
(如果您想嘗試它,它也在小提琴上)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.