XML属性c#

问题描述:

我需要显示processingStatus和每个字段节点值及其相应的以下XML名称。XML属性c#

<?xml version="1.0" encoding="UTF-8"?> 
<T24 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.temenos.com/T24/OFSML/130" xsi:schemaLocation="http://www.temenos.com/T24/OFSML/130 ofsml13.xsd"> 
    <serviceResponse> 
    <ofsTransactionProcessed application="FUNDS.TRANSFER" function="INPUT" operation="VALIDATE" processingStatus="OK" version="BOOK.TRAN.VAL.MCB"> 
     <transactionId>FT15056T2QLP</transactionId> 
     <field mv="1" name="TRANSACTION.TYPE" sv="1">AC</field> 
     <field mv="1" name="CURRENCY.MKT.DR" sv="1">1</field> 
     <field mv="1" name="DEBIT.CURRENCY" sv="1">USD</field> 
     <field mv="1" name="DEBIT.AMOUNT" sv="1">125.00</field> 
     <field mv="1" name="DEBIT.VALUE.DATE" sv="1">20150225</field> 

    </ofsTransactionProcessed> 
    </serviceResponse> 
</T24> 

任何人都可以帮助我吗? 我的代码: 编辑的代码:

XmlTextReader reader = new XmlTextReader("XML03.xml"); 
      Console.WriteLine(reader.Attributes["processingStatus"].Value); 
      while (reader.Read()) 
      { 
       Console.WriteLine(reader.Value); 

      } 
      Console.ReadLine(); 
+0

你有什么企图?任何搜索努力? – Steve

+0

@Steve yes请参阅编辑 – velvt

+0

现在请描述代码有什么问题以及输出/异常 – Steve

一种可能性是定义一个类型或多种类型反映了XML的结构;成员必须被赋予属于XmlElementAttribute的属性here和属性XmlAttributeAttribute,其被记录为here;如果合适,文件内容可以使用XmlDeserializer类进行反序列化,该类记录为here。有关如何使用反序列化设施的详细说明,请参见this官方教程。

尝试XML LINQ

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 results = doc.Descendants().Where(x => x.Name.LocalName == "ofsTransactionProcessed").Select(x => new { 
       application = (string)x.Attribute("application"), 
       function = (string)x.Attribute("function"), 
       operation = (string)x.Attribute("operation"), 
       processingStatus = (string)x.Attribute("processingStatus"), 
       version = (string)x.Attribute("version"), 
       transactionId = x.Elements().Where(y => y.Name.LocalName == "transactionId").Select(z => (string)z).FirstOrDefault(), 
       fields = x.Elements().Where(y => y.Name.LocalName == "field").Select(z => new { 
        mv = (string)z.Attribute("mv"), 
        name = (string)z.Attribute("name"), 
        sv = (string)z.Attribute("sv"), 
        value = (string)z 
       }).ToList() 
      }).FirstOrDefault(); 
     } 
    } 
} 
+0

@jdwend请参阅编辑代码 – velvt

+0

xml文件有多大?小XML文件不需要XmlReader。什么标签重复?我可以修改代码来使用xml阅读器,但需要重复的元素。如果你的输入是一个字符串,那么简单地用Parse(你的xml字符串)替换Load(FILENAME)。 – jdweng

+0

如何输出所有结果?即processingStatus和fields? – velvt