C#XmlSerializer-XML文档中存在错误(0,0)<;nodename>;不期而至
我以前对这个问题发表过不同的看法,但毫无乐趣。我希望重构后的问题会有所帮助 本质上,我将XML字符串加载到XDocument中,然后使用XDocument.GetReader()返回XmlReader。在此,我将使用XmlSerializer对以下XML进行反序列化:C#XmlSerializer-XML文档中存在错误(0,0)<;nodename>;不期而至,c#,xml,C#,Xml,我以前对这个问题发表过不同的看法,但毫无乐趣。我希望重构后的问题会有所帮助 本质上,我将XML字符串加载到XDocument中,然后使用XDocument.GetReader()返回XmlReader。在此,我将使用XmlSerializer对以下XML进行反序列化: <?xml version='1.0' encoding='UTF-8'?> <osgb:FeatureCollection xmlns:osgb='http://www.ordnancesurvey.co.uk
<?xml version='1.0' encoding='UTF-8'?>
<osgb:FeatureCollection
xmlns:osgb='http://www.ordnancesurvey.co.uk/xml/namespaces/osgb'
xmlns:gml='http://www.opengis.net/gml'
xmlns:xlink='http://www.w3.org/1999/xlink'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.ordnancesurvey.co.uk/xml/namespaces/osgb http://www.ordnancesurvey.co.uk/xml/schema/v7/OSDNFFeatures.xsd'
fid='GDS-58116-1'>
<gml:description>OS</gml:description>
<gml:boundedBy>
<gml:null>unknown</gml:null>
</gml:boundedBy>
<osgb:queryTime>2009-07-30T02:35:17</osgb:queryTime>
<osgb:queryExtent>
<osgb:Rectangle srsName='osgb:BNG'>
<gml:coordinates>291000.000,92000.000 293000.000,94000.000</gml:coordinates>
</osgb:Rectangle>
</osgb:queryExtent>
</osgb:FeatureCollection>
内部异常显示:不是预期的
我看不出有什么问题。我不需要集合上方的根节点,是吗?我测试了一个简化版本(从
FeatureCollectionType
中删除了所有属性),它没有抛出第一个元素:
private static string xml =
@"<?xml version='1.0' encoding='UTF-8'?>
<osgb:FeatureCollection
xmlns:osgb='http://www.ordnancesurvey.co.uk/xml/namespaces/osgb'
xmlns:gml='http://www.opengis.net/gml'
xmlns:xlink='http://www.w3.org/1999/xlink'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.ordnancesurvey.co.uk/xml/namespaces/osgb http://www.ordnancesurvey.co.uk/xml/schema/v7/OSDNFFeatures.xsd'
fid='GDS-58116-1'>
</osgb:FeatureCollection>";
public static void RunSnippet()
{
using (var sr = new StringReader(xml))
{
var xs = new XmlSerializer(typeof(FeatureCollectionType));
var obj = xs.Deserialize(sr);
Console.WriteLine("if you are reading this, it didn't throw");
}
}
private静态字符串xml=
@"
";
公共静态void RunSnippet()
{
使用(var sr=newstringreader(xml))
{
var xs=新的XmlSerializer(typeof(FeatureCollectionType));
var obj=xs.反序列化(sr);
WriteLine(“如果您正在阅读本文,它不会抛出”);
}
}
如何实例化
XmlSerializer
?为什么不直接使用该方法?无需执行前两个步骤。从URI开始,使用WebClient通过XmlSerializer.Deserialize(stream)
方法获得XMLsame问题,我显然缺少一些内容,但看不到您可以添加什么实际的反序列化代码(XmlSerialization
实例化和其他内容)?因为这可能有问题。在一个小的测试项目中,创建一个FeatureCollectionType实例并将其序列化为文件。比较一下XMLs。谢谢大家!为精神检查格罗干杯。同时也在做类似的事情,把它剥回去。原来我在同一个命名空间中有另一个版本的xsd生成的类。因为xsd.exe生成分部类,所以ide不会抛出它。希望这能帮助别人犯愚蠢的错误。谢谢你的时间(很抱歉浪费了你的时间!)
private static string xml =
@"<?xml version='1.0' encoding='UTF-8'?>
<osgb:FeatureCollection
xmlns:osgb='http://www.ordnancesurvey.co.uk/xml/namespaces/osgb'
xmlns:gml='http://www.opengis.net/gml'
xmlns:xlink='http://www.w3.org/1999/xlink'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.ordnancesurvey.co.uk/xml/namespaces/osgb http://www.ordnancesurvey.co.uk/xml/schema/v7/OSDNFFeatures.xsd'
fid='GDS-58116-1'>
</osgb:FeatureCollection>";
public static void RunSnippet()
{
using (var sr = new StringReader(xml))
{
var xs = new XmlSerializer(typeof(FeatureCollectionType));
var obj = xs.Deserialize(sr);
Console.WriteLine("if you are reading this, it didn't throw");
}
}