2014-11-21 2 views

답변

0

아마도 프레임 워크 버전에 따라 다릅니다. 나는 .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 계속 여기에 전체 작업 예이다.

+0

XmlElement는 필드 및 속성에 적용 할 수 있습니다. 오류가 발생합니다. 루트 클래스의 경우 XmlRoot 속성 – Reniuz

+0

하지만 배열이 비어 있기 때문에 XmlRoot가 도움이되지 않습니다. –

+0

최종 사용시 Document [] documents = root.Documents.ToArray(); 배열을 가져옵니다. – elite

0

본질적으로 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 루프를 사용하여 목록에 추가의 문제

이 도움이 되었기를 바랍니다. 행운을 빕니다.

+0

첫 번째 항목에서만 작동하며 모든 항목에 적용되지는 않습니다. –

+0

오케이. 이것을 시도하면 어떻게됩니까? foreach (xDoc.Element ("DOC")의 var 요소) 값 { docList.Add (xDoc.Element ("DOC") .Value); } –

0

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); 
     } 
    }