Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ReadContentAs的XmlElement等效项_C#_Xmldocument_Xmlreader - Fatal编程技术网

C# ReadContentAs的XmlElement等效项

C# ReadContentAs的XmlElement等效项,c#,xmldocument,xmlreader,C#,Xmldocument,Xmlreader,我正在尝试将我使用的XmlReader更改为XmlDocument,但有些方法似乎不存在。我正在为XmlReader.ReadContentAs和XmlReader.ReadElementContentAs寻找一个等价物 Type myType; if(myType == typeof(Boolean) || myType == typeof(Double)) { object myvalue = _cReader.ReadElementContentAs(myType, null);

我正在尝试将我使用的
XmlReader
更改为
XmlDocument
,但有些方法似乎不存在。我正在为
XmlReader.ReadContentAs
XmlReader.ReadElementContentAs
寻找一个等价物

Type myType;

if(myType == typeof(Boolean) || myType == typeof(Double))
{
    object myvalue = _cReader.ReadElementContentAs(myType, null);
}

// should become:
if(myType == typeof(Boolean) || myType == typeof(Double))
{
    object myvalue = xmlElement.ParseAnything(myType);
}

我不仅使用
Boolean
,而且可以以这种方式读取多种类型。这可能是因为
myType
也是
Single
Double

如果您更改了XmlReader,为什么不将其更改为XDocument(比XmlDocument简单得多)

关于你的问题,如果我理解你的意思,你只需要
属性

就可以将属性解析为特定类型:

bool mybool = Boolean.Parse(myXmlElement.InnerText);
更新:

您可以使用方法将字符串从Xml解析为给定的
类型
变量:

Type myType;
if(myType == typeof(Boolean) || myType == typeof(Double))
{
    object myvalue = Convert.ChangeType(xmlElement.InnerText, myType);
}

Parse是特定的,我希望它对任何类型都是动态的。就像ReadElementCOntentAs一样。当您需要作为其他类型读取时,只需使用
OtherType.Parse()
更改
Boolean.Parse()
。你的意思是什么?
ReadElementContentAs()
是否也要求您在编译时指定类型?我更改了示例。我不想为每种类型写一行新行,如果它是简单的原语的话。我真的在寻找ReadElementContentAs的等效方法。
XmlDocument
XmlReader
的方法不同,所以我们不能只寻找完全等效的方法。检查我的更新,有一个通用的.NET函数(不特定于
XmlDocument
)可以执行相同的操作。