我有通过 xsd.exe (xsd.exe someschema.xsd /classes) 生成的类。其中一个节点被声明为一个元素:
<xs:element name="containsxmlelementsbeneath"/>
正如(虚构的)名称所暗示的那样,它看起来像这样:
<containsxmlelementsbeneath>
<somemore>
...
</somemore>
</containsxmlelementsbeneath>
当它被反序列化时,我在调试器中看到它的类型
System.Xml.XmlNode[]
我可以在即时窗口中强制它
?((System.Xml.XmlNode[])elem.containsxmlelementsbeneath)[0].InnerXml
我没有 IntelliSense,当我在我的代码中尝试该片段时,这是有道理的——该类似乎已从 WinRT 配置文件中删除——如果你需要的只是 Windows.Data.Xml.Dom.IXmlNode,这很好——但不在这个案例。
我怎样才能去获取该元素的字符串表示形式?有没有办法“修复” xsd.exe 生成的输出,使其使用 Windows.Data.Xml.Dom 进行序列化?(在我看来不像)
我是否遇到了他们没有想到的边缘案例?
更新 - 尝试了以下(我知道,滥用动态):
dynamic x = elem.containsxmlelementsbeneath;
string s = x[0].InnerXml;
这会产生“API 'System.Xml.XmlNode[]' 不能在当前平台上使用。”