如何在 .NET 中访问 XmlElementAttributte 中的值

How to access values in XmlElementAttributte in .NET

我正在 .NET 中调用 Web 服务操作,其中 returns xml 数据具有以下 class 对象:

    public partial class data : object, System.ComponentModel.INotifyPropertyChanged {

    private object[] itemsField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("currentRow", typeof(dataCurrentRow), Order=0)]
    [System.Xml.Serialization.XmlElementAttribute("deleteRow", typeof(dataDeleteRow), Order=0)]
    [System.Xml.Serialization.XmlElementAttribute("insertRow", typeof(dataInsertRow), Order=0)]
    [System.Xml.Serialization.XmlElementAttribute("modifyRow", typeof(dataModifyRow), Order=0)]
    public object[] Items {
        get {
            return this.itemsField;
        }
        set {
            this.itemsField = value;
            this.RaisePropertyChanged("Items");
        }
    }



    public partial class dataCurrentRow : object, System.ComponentModel.INotifyPropertyChanged {

    private object[] columnValueField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("columnValue", Order=0)]
    public object[] columnValue {
        get {
            return this.columnValueField;
        }
        set {
            this.columnValueField = value;
            this.RaisePropertyChanged("columnValue");
        }
    }

Xml 从 Web 服务调用返回:

      <QAS_GETQUERYRESULTS_RESP_MSG xmlns="http://xmlns.oracle.com/Enterprise/Tools/schemas/QAS_GETQUERYRESULTS_RESP_MSG.VERSION_1">
     <webRowSet xmlns="http://java.sun.com/xml/ns/jdbc">
        <properties>
    ...
    ...
        </properties>
        <metadata>
    ...
    ...
        </metadata>
        <data>
           <currentRow>
              <columnValue>abc</columnValue>
              <columnValue>123</columnValue>
              <columnValue>xyz</columnValue>
           </currentRow>
           <currentRow>
              <columnValue>def</columnValue>
              <columnValue>456</columnValue>
              <columnValue>opq</columnValue>
           </currentRow>
        </data>
     </webRowSet>
  </QAS_GETQUERYRESULTS_RESP_MSG>

但是,我不确定如何使用 class 对象 "data" 在 .NET 中访问 xml 值 "columnValue"。请帮助告诉我如何访问这些值。非常感谢!

没有所有代码就不容易回答,但是您应该能够迭代 'Items' 集合来检查每个集合的类型。如果您找到一个 'typeof(dataCurrentRow)' 的项目,您应该能够将该对象转换为该类型并访问其 属性 集合(我希望它是 'columnValue' 的集合objects. 你有另一个部分的 dataCurrentRow 对象吗 class 如果你可以 post 这个我可以给你一个例子。

编辑 - 您可以使用列值(请注意您需要更改对象名称空间以符合您自己的名称空间)-

        var myData = new data();
        //populate the data object via your webservice call.

        if (myData.Items != null && myData.Items.Length > 0)
        {
            var currentData = from c in myData.Items where c.GetType() == typeof(ConsoleApplication3.data.dataCurrentRow) select c as ConsoleApplication3.data.dataCurrentRow ;

            if (currentData != null && currentData.Count() > 0)
            {
                foreach (var row in currentData)
                {
                    if(row != null && row.columnValue != null)
                        Console.WriteLine(row.columnValue);
                }
            }
        }