为了账号安全,请及时绑定邮箱和手机立即绑定

如何在.NET中读取XML?

如何在.NET中读取XML?

C#
万千封印 2019-11-19 09:44:16
XML菜鸟在这里!所以我有一些xml数据:<DataChunk>    <ResponseChunk>        <errors>            <error code=\"0\">                Something happened here: Line 1, position 1.            </error>        </errors>    </ResponseChunk></DataChunk>我如何获得“错误”列表,可以在其中访问“错误代码”和下面的文本描述?另外,我在C#中使用.net4.0 ...谢谢!

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

将XML加载到中XmlDocument,然后使用xpath查询提取所需的数据。


例如


XmlDocument doc = new XmlDocument();

doc.LoadXml(xmlstring);


XmlNode errorNode = doc.DocumentElement.SelectSingleNode("/DataChunk/ResponseChunk/Errors/error");


string errorCode = errorNode.Attributes["code"].Value;

string errorMessage = errorNode.InnerText;

如果XML可能具有多个错误元素,则可以SelectNodes用来获取一个XmlNodeList包含该xpath的所有元素的。例如:


XmlDocument doc = new XmlDocument();

doc.LoadXml(xmlstring);


XmlNodeList errorNodes = doc.DocumentElement.SelectNodes("/DataChunk/ResponseChunk/Errors/error");


foreach(XmlNode errorNode in errorNodes)

{

  string errorCode = errorNode.Attributes["code"].Value;

  string errorMessage = errorNode.InnerText;

}

选项2


如果您具有XML的XML模式,则可以将模式绑定到类(使用.NET xsd.exe工具)。一旦有了它,就可以将XML反序列化为一个对象,然后从该对象而不是原始XML对其进行处理。这本身就是一个完整的主题,因此,如果您确实有该架构,则值得研究。


查看完整回答
反对 回复 2019-11-19
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

您可以使用Linq到XML:


var doc = XDocument.Parse(xml);

var errors = from e in doc.Descendants("error")

             select new

             {

                code = e.Attribute("code").Value,

                msg = e.Value.Trim()

             };


foreach (var e in errors)

{

    // use e.code & e.msg

}

但是,如果输入的XML 非常大,则最好使用来浏览文档XMLReader。


查看完整回答
反对 回复 2019-11-19
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

XmlReader xmlReader = XmlReader.Create(new StringReader(response));

        AmortizationCalculatorBE amortization = new AmortizationCalculatorBE();

List<PaymentCalculator> paymentList = new List<PaymentCalculator>();

        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.Load(new StringReader(response));

        XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("response/amortizationschedule/payment");

        XmlNodeList nodeList2 = xmlDoc.DocumentElement.SelectNodes("response");

        foreach (XmlNode node in nodeList)

        {

            PaymentCalculator payment = new PaymentCalculator();

            payment.beginningbalance = node.SelectSingleNode("beginningbalance").InnerText;

            payment.principal = node.SelectSingleNode("principal").InnerText;

            payment.interest = node.SelectSingleNode("interest").InnerText;

            paymentList.Add(payment);


        }

        amortization._PaymentCalculator = paymentList;

        foreach (XmlNode node in nodeList2)

        {

            amortization.totalprincipal = node.SelectSingleNode("totalprincipal").InnerText;

            amortization.totalinterest = node.SelectSingleNode("totalinterest").InnerText;


        }


查看完整回答
反对 回复 2019-11-19

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号