의 배열을 제시한다. C# (XmlSerializer)에서 어떻게 할 수 있습니까?XmlSerializer가 내가이처럼 보이는 XML 파일이 항목
답변
아마도 프레임 워크 버전에 따라 다릅니다. 나는 .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을 당신이 읽고있는 파일의 경로 (이름)입니다. 얻을 수있는 데이터를 저장하려면 목록을 사용해야합니다 (설정된 숫자가 아닌 한 문자열 [] 만 사용할 수 있습니다).
docList.ToArray();
:
foreach (var element in xDoc.Descendants("ROOT"))
{
string doc = element.Element ("DOC").Value;
docList.Add (doc);
}
이 그것을 배열 활용하기 :
List<string> docList = new List<string>();
는 그런 다음 XML 요소를 통해 이동하는 foreach 루프를 사용하여 목록에 추가의 문제
이 도움이 되었기를 바랍니다. 행운을 빕니다.
첫 번째 항목에서만 작동하며 모든 항목에 적용되지는 않습니다. –
오케이. 이것을 시도하면 어떻게됩니까? foreach (xDoc.Element ("DOC")의 var 요소) 값 { docList.Add (xDoc.Element ("DOC") .Value); } –
이 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
또는 XDocument를 사용하십시오. –
이것을 확인하십시오 http://stackoverflow.com/questions/364253/how-to-deserialize-xml-document – malkam