日期:2014-05-18  浏览次数:20761 次

请问一个反序列化问题
代码片段:
public   class   MyClass
{
      public   Hello[]   ABC;
}

生成的XML片段
<s:element   minOccurs= "0 "   maxOccurs= "unbounded "   name= "Hello "   nillable= "true "   type= "tns:Hello "/>

请问怎么可以设置maxOccurs这个值?例如2。

------解决方案--------------------
http://www.cnblogs.com/jsjkandy/archive/2007/07/26/832257.html
http://www.zlku.cn/f/97v/
------解决方案--------------------
该片段可以装载到XmlDocument,然后通过XmlElement.SetAttribute 方法方法来实现。
XmlElement.SetAttribute 方法有重载,分别对应带命名空间前缀或没有前缀的情况。

如果生成的XML片段 是在外部文件中,那我想外部文件应该是xml文件,也可以装载到XmlDocument。

以下实例供参考:
namespace Zhzuo
{
class ZZConsole
{
[STAThread]
static void Main(string[] args)
{
string strXml="<?xml version=\"1.0\"?>"
+"<Data>"
+"<Head>"
+"<Nodeid>1111</Nodeid>"
+"<Subid>2222</Subid>"
+"<Version>2004</Version>"
+"<Date>20040302</Date>"
+"<Time>101500</Time>"
+"</Head>"
+"<Body>"
+"<Code>01</Code>"
+"<Name>深圳</Name>"
+"<IdType>0</IdType>"
+"<Idno>110258740824082</Idno>"
+"</Body>"
+"</Data>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(strXml);
string vv;

XmlNodeList myNodes = doc.GetElementsByTagName("Version");
vv = myNodes[0].InnerText;
//修改
myNodes[0].InnerText = "123455";
Console.WriteLine(vv);
myNodes = doc.SelectNodes("//Version");
vv = myNodes[0].InnerText;
Console.WriteLine(vv);
//修改
myNodes[0].InnerText = "67890";
doc.Save("d:\\text.xml");
Console.ReadLine();
}

}

}