3

我通过 xsd.exe 工具从模式生成了一个类

xmlns=""现在,当我对课程进行序列化时,我会在根目录下的所有内容上获得额外信息。

<myroot xmlns="blabla">
    <tag1 xmlns="">
        <tag2>
            ...

架构如下所示:

<xsd:schema xmlns="blabla" targetNamespace="blabla" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="MyRoot">

我在架构中看不到任何内容,表明 tag1 元素及以下元素应该位于根目录之外的另一个命名空间中。

序列化代码只是做:

MyRoot doc = new MyRoot();
...
XmlSerializer xs = new XmlSerializer(typeof(MyRoot));
MemoryStream ms = new MemoryStream();
try {
    xs.Serialize(ms, doc);

从 xsd.exe 生成的类只包含根类的命名空间属性。

4

1 回答 1

1

"blabla"它在这里所做的是用特定的命名空间覆盖父元素的命名空间""

它在这里做的原因是因为tag1有一个空的命名空间集(或者它隐含地推断它有一个空的命名空间)并且myroot有命名空间"blabla"

解决方案是确保tag1具有与"blabla".

我知道,这很烦人,因为这意味着您必须一次又一次地提供命名空间,但这就是它的工作原理。

于 2010-11-10T16:38:55.373 回答