XML解析,奇怪的行为.(前3个日期有效,其余为空白)
本文关键字:有效 日期 空白 3个 解析 XML | 更新日期: 2023-09-27 18:26:08
所以这是我的代码:
static void Main(string[] args)
{
string Xml;
Xml = System.IO.File.ReadAllText (@"C:'Users'user'Desktop'Practice Projects'C#'XML.txt");
//Console.WriteLine(Xml);
string created = Xml.Substring(Xml.IndexOf("<created>")+30,15);
string modified = Xml.Substring(Xml.IndexOf("<modified>") + 31, 15);
string revised = Xml.Substring(Xml.IndexOf("<revised>") + 30, 15);
string lastAccessed = Xml.Substring(Xml.IndexOf("<lastaccessed>") + 35, 15);
Console.WriteLine (lastAccessed);
string updatedBy = Xml.Substring(Xml.IndexOf("<updatedby>") + 17, 9);
Console.WriteLine (updatedBy);
string mailBody = Xml.Substring(Xml.IndexOf(""));
//string status;
Mail mail = new Mail();
mail.Created = DateTime.ParseExact (created, "yyyyMMddTHHmmss", CultureInfo.InvariantCulture);
Console.WriteLine ("The e-Mail was created on: " + mail.Created);
mail.Modified = DateTime.ParseExact (modified,"yyyyMMddTHHmmss", CultureInfo.InvariantCulture);
Console.WriteLine ("The e-MAil was last modified on: " + mail.Modified);
mail.Revised = DateTime.ParseExact (revised, "yyyyMMddTHHmmss", CultureInfo.InvariantCulture);
Console.WriteLine ("The e-Mail was revised on: " + mail.Revised);
mail.LastAccessed = DateTime.ParseExact (lastAccessed, "yyyyMMddTHHmmss", CultureInfo.InvariantCulture);
Console.WriteLine ("The e-Mail was last accessed on:", mail.LastAccessed);
mail.UpdatedBy = updatedBy;
Console.WriteLine ("The e-Mail was last updated by: ", mail.UpdatedBy);
mail.MailBody = mailBody;
Console.WriteLine ("The e-Mail body is: ", mail.MailBody);
Console.ReadLine();
}
public static string PraseDateTime (string Text, string StartTag, string EndTag)
{
int StartPosition = Text.IndexOf(StartTag) + StartTag.Length;
int Length = Text.IndexOf(EndTag) - StartPosition;
return Text.Substring(StartPosition, Length - 6);
}
public class Mail
{
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
public DateTime Revised { get; set; }
public DateTime LastAccessed { get; set; }
public string UpdatedBy { get; set; }
public Requester Caller { get; set; }
public String MailBody { get; set; }
public Mail ()
{
Caller = new Requester();
}
}
所以问题是,我的代码适用于前3个,但当涉及到最后2个时,它什么都没有显示:lastAccessed和updatedBy,即使当我检查这2个变量时,文本仍然是空白的,它们显然包含了一些东西。(第一个包含日期,比如:20120522T230123,第二个(名称),比如:WGAMaster)我可以补充一下,lastAccessed和modified是一样的,但lastAccessed不起作用。
如果有任何帮助,或者有更好的方法从XML中解析文本,我将不胜感激。非常感谢。
我假设您使用的是XML。为什么不使用正确的Xml Parser。NET提供了分析XML文件的类,例如,您可以使用XmlDocument类或XmlSerializer。您可以查看使用XmlSerializer的示例@https://msdn.microsoft.com/en-us/library/tz8csy73(v=vs.110).aspx