如何在 .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);
}
}
}
我正在 .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);
}
}
}