如何将数据从XML序列化到C#.NET

如何将数据从XML序列化到C#.NET,c#,xml,date,C#,Xml,Date,但它显示异常“字符串未被识别为有效的日期时间。” 有人知道如何解决这个问题吗?无需使用XmlConvert或Convert类所需 objCompanyVouchar.VOUCHER_DATE=XmlConvert.ToDateTime(node.SelectSingleNode("DATE").InnerText) objCompanyVouchar.VOUCHER_DATE = Convert.ToDateTime(node.SelectSingleNode("DATE").InnerText

但它显示异常“字符串未被识别为有效的日期时间。”
有人知道如何解决这个问题吗?

无需使用
XmlConvert
Convert
类所需

objCompanyVouchar.VOUCHER_DATE=XmlConvert.ToDateTime(node.SelectSingleNode("DATE").InnerText)
objCompanyVouchar.VOUCHER_DATE = Convert.ToDateTime(node.SelectSingleNode("DATE").InnerText);
假设您知道格式为“yyyyMMdd”,那么您需要做的是:

using System;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Serialization;
namespace XMLTest1
{
    public class Test
    {
        public String value1;
        public String value2;
    }

    class listtest
    {
        static void Main(string[] args)
        {
            XmlDocument myXml = new XmlDocument();
            XPathNavigator xNav = myXml.CreateNavigator();
            Test myTest = new Test() { value1 = "Value 1", value2 = "Value 2" };
            XmlSerializer x = new XmlSerializer(myTest.GetType());
            using (var xs = xNav.AppendChild())
            {
                x.Serialize(xs, myTest);
            }
            Console.WriteLine(myXml.OuterXml);
            Console.ReadKey();
        }
    } }
|您可以选择所需的格式,阅读更多信息,请访问

var date= DateTime.ParseExact(node.SelectSingleNode("DATE").InnerText,"yyyyMMdd", CultureInfo.InvariantCulture);

objCompanyVouchar.VOUCHER_DATE= date; //If VOUCHER_DATE is DateTime 
//objCompanyVouchar.VOUCHER_DATE = date.ToString(); //If VOUCHER_DATE is String 

你好,Jacky,在上面的XML中,partyledgername不止一个。如何找到这两个partyledgernameHi@anisprogrammer您可以使用
SelectNodes
var pnameNodes=node.SelectNodes(“partyledgername”)
pnameNodes是带有
pnameNodes[0]的XmlNodeList。InnerText=“渣打银行”
pnamode[1].InnerText=“XYZ有限公司”
var date= DateTime.ParseExact(node.SelectSingleNode("DATE").InnerText,"yyyyMMdd", CultureInfo.InvariantCulture);

objCompanyVouchar.VOUCHER_DATE= date; //If VOUCHER_DATE is DateTime 
//objCompanyVouchar.VOUCHER_DATE = date.ToString(); //If VOUCHER_DATE is String 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            var inportData = doc.Descendants("IMPORTDATA").Select(x => new {
                reportName = (string)x.Descendants("REPORTNAME").FirstOrDefault(),
                company = (string)x.Descendants("SVCURRENTCOMPANY").FirstOrDefault(),
                remoteID = (string)x.Descendants("VOUCHER").FirstOrDefault().Attribute("REMOTEID"),
                vchKey = (string)x.Descendants("VOUCHER").FirstOrDefault().Attribute("VCHKEY"),
                date = DateTime.ParseExact((string)x.Descendants("DATE").FirstOrDefault(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture),
                voucherName = (string)x.Descendants("VOUCHERTYPENAME").FirstOrDefault(),
                voucherNumber = (int)x.Descendants("VOUCHERNUMBER").FirstOrDefault(),
                ledgerName = (string)x.Descendants("PARTYLEDGERNAME").FirstOrDefault()
            }).FirstOrDefault();

        }
    }
}