数组我有一个看起来像这样的XML文件:XmlSerializer的 - 现在项目
<ROOT><DOC> ... </DOC><DOC> ... </DOC><DOC> ... </DOC></ROOT>
我希望把所有的DOC在数组中。我如何在C#(XmlSerializer)中做到这一点?
数组我有一个看起来像这样的XML文件:XmlSerializer的 - 现在项目
<ROOT><DOC> ... </DOC><DOC> ... </DOC><DOC> ... </DOC></ROOT>
我希望把所有的DOC在数组中。我如何在C#(XmlSerializer)中做到这一点?
也许它取决于框架版本。我有.net v4,并将XmlSerializer与以下类一起使用。
感谢@Reniuz提示的错误。这是一个完整的工作示例:
public class Document
{
[XmlAttribute]
public string Value { get; set; }
}
[XmlRoot("ROOT")]
public class Root
{
[XmlElement("DOC")]
public List<Document> Documents { get; set; }
}
使用此代码加载:
string data = "<ROOT><DOC Value=\"adhfjasdhf\"></DOC><DOC Value=\"asldfhalsdh\"></DOC></ROOT>";
XmlSerializer serializer = new XmlSerializer(typeof(Root));
using (StringReader sr = new StringReader(data))
{
Root root = serializer.Deserialize(sr) as Root;
}
保持attantion该标记区分大小写。
实质上,您需要一个包含XML的字符串,一个读取字符串的StringReader,一个从StringReader读取提要的XMLReader和一个用于存储XMLReader提要的XDocument。这可以在一个单一的代码行来完成,像这样:
XDocument xDoc = XDocument.Load (XmlReader.Create (new StringReader (xmlString)));
的的xmlString是您正在阅读的文件的路径(和名称)。你应该使用List来存储你将得到的数据(除非它是一个设置的数字,那么你可以使用一个字符串[])。
List<string> docList = new List<string>();
然后,它使用foreach循环来遍历XML元素,并将它们添加到列表中的一个问题:
foreach (var element in xDoc.Descendants("ROOT"))
{
string doc = element.Element ("DOC").Value;
docList.Add (doc);
}
,使其成为一个数组,使用:
docList.ToArray();
我希望这有助于!祝你好运。
它只适用于第一个项目,不适用于所有项目。 – 2014-11-21 14:30:15
好的。如果您尝试这样做: foreach(xDoc.Element(“DOC”)中的var元素)值 { docList.Add(xDoc.Element(“DOC”)。Value); } – 2014-11-21 14:34:26
这是正确的答案,基于Magicbjorn答案:
首先,我从一个StreamReader得到我的字符串。
using(StreamReader read = new StreamReader("FilePath.xml"))
{
XDocument xDoc = XDocument.Load(XmlReader.Create(read));
List<string> docList = new List<string>();
var root = xDoc.Element("ROOT");
foreach (var element in root.Elements("DOC"))
{
string s = element.Value;
docList.Add(s);
}
}
是的,你可以用XmlSerializer来做到这一点。 – Reniuz 2014-11-21 14:04:04
或使用XDocument。 – 2014-11-21 14:08:19
检查此问题http://stackoverflow.com/questions/364253/how-to-deserialize-xml-document – malkam 2014-11-21 14:09:34