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
)可以执行相同的操作。