Cha*_*IIC 1 c# xml xpath xml-serialization
我在我的文件中使用XML并想要序列化然后反序列化一个对象,我有些新手.该对象包含一对字符串,一个int,然后是两个int []数组.使用XmlSerializer进行序列化很好,生成的XML看起来像这样:
<?xml version="1.0" encoding="utf-16"?>
<Harvey xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Carl</Name>
<Ch>KNV</Ch>
<Tn>40</Tn>
<APoints>
<int>8</int>
<int>20</int>
<int>16</int>
<int>16</int>
<int>12</int>
<int>12</int>
<int>16</int>
<int>16</int>
<int>4</int>
<int>4</int>
<int>4</int>
</APoints>
<SPoints>
<int>3</int>
<int>12</int>
<int>10</int>
<int>10</int>
<int>6</int>
<int>6</int>
<int>10</int>
<int>10</int>
</SPoints>
</Harvey>
Run Code Online (Sandbox Code Playgroud)
问题是尝试将int []值加载回其数组中.我一直无法弄清楚如何告诉我想所有的Apoints加载到一个int []数组中的应用.我怀疑解决方案非常简单,但我一直无法弄清楚.
一样容易
[XmlRoot( "Harvey" )]
public class Widget
{
[XmlElement]
public string Name { get ; set; }
[XmlElement]
public string Ch { get ; set; }
[XmlElement]
public int Tn { get ; set; }
[XmlArray("APoints")]
[XmlArrayItem("int")]
public int[] APoints { get ; set ; }
[XmlArray("SPoints")]
[XmlArrayItem("int")]
public int[] SPoints { get ; set ; }
}
class Program
{
public static T Rehydrate<T>( string xml )
{
T instance ;
XmlSerializer serializer = new XmlSerializer( typeof(T) ) ;
using ( TextReader tr = new StringReader( xml ) )
{
instance = (T) serializer.Deserialize( tr ) ;
}
return instance ;
}
static void Main( string[] args )
{
string xml = @"
<Harvey xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<Name>Carl</Name>
<Ch>KNV</Ch>
<Tn>40</Tn>
<APoints>
<int>8</int>
<int>20</int>
<int>16</int>
<int>16</int>
<int>12</int>
<int>12</int>
<int>16</int>
<int>16</int>
<int>4</int>
<int>4</int>
<int>4</int>
</APoints>
<SPoints>
<int>3</int>
<int>12</int>
<int>10</int>
<int>10</int>
<int>6</int>
<int>6</int>
<int>10</int>
<int>10</int>
</SPoints>
</Harvey>
";
Widget instance = Rehydrate<Widget>( xml ) ;
return;
}
}
Run Code Online (Sandbox Code Playgroud)