2014-09-18 2 views
0

다음과 비슷한 XML 파일이 있습니다. 현재 값을 변경하려면 XML로 이동하고 필요에 따라 레코드를 변경/추가/제거해야합니다.모든 자식 노드를 가져 오기 위해 XML 파일 읽기

<configuration> 
    <locations> 
     <add key="1234" type="Type1" location="Default Location 1" value="10"/> 
     <add key="4567" type="Type2" location="Default Location 1" value="13"/> 
     <add key="7890" type="Type1" location="Default Location 2" value="17"/> 
    </locations> 
</configuration> 

저는이 소프트웨어와이 소프트웨어를 사용하는 몇 가지 다른 XML에 대해 Windows Form GUI를 작성하고 있습니다. 노드 이름을 가지고 있기 때문에 다른 XML에/putsettings를 가져올 수 있지만이 파일은 (처음 생성되었을 때) 다르게 만들어졌습니다.

각 행을 문자열로 가져와 화면을 나눌 수 있으므로 필요한 화면 (키/유형/위치/값)을 표시 할 수 있습니다. 그런 다음 업데이트 할 때 정보로 파일을 업데이트해야합니다.

나는 약간의 도움을 찾고 있어요 : 모든 노드를 검색

  • <locations> 내에서 모든 노드를 삭제하고 그래서 모든 우발적으로 다시 속성에 노드를 추가 <locations>

  • 내 속성 (레코드 제거/추가/업데이트) 등

+0

안녕하세요, 이들은 지금까지 검토 한 페이지가 있으며, 이들 중 하나가 대답을 가지고 있지만 내가 제한된 지식을했습니다 여전히 순간에 비트와 조각을 학습하는 것이 될 수있다 : http://stackoverflow.com/questions/2915294/iterating-through-all-nodes-in-xml-file http://stackoverflow.com/questions/11993857/read-all-xml-child-nodes- of-each-specific-node http://stackoverflow.com/questions/1600065/how-to-read-attribute-value-from-xmlnode-in-c http : //www.csharp-examples.net/xml-nodes-by-attribute-value/ –

답변

0

XmlReader 당신을 위해 일합니다.

이와 비슷한 것;

 XmlReader reader = new XmlReader(filepath) 

     string s = ""; 

     while(reader.Read()) 
     { 
       if(reader.HasAttributes) 
       { 
       s = reader["attributename"].Value; 
       } 
     } 

휴대 전화에서 입력 한 이후로 컴파일 될 것이라고 약속 할 수 없습니다.

그런 다음 저장된 값을 사용하고 XmlWriter을 사용하여 데이터를 파일에 쓸 수 있습니다.

또한 많은 데이터로 작업하는 경우 XmlReader을 사용하는 것이 좋습니다. XmlDocument을 사용하면 전체 문서가 RAM에로드되므로 성능 문제가 발생할 수 있습니다. XmlReaderXmlDocument보다 적게 메모리를 사용하여 데이터를 스트리밍합니다.

+0

XMLReader에 대한 정보를 주셔서 감사합니다. 크게 감사드립니다 –

+0

질문에 완전히 대답하지 않았으므로 데이터에 파일을 쓸 수 있도록 도와주는 XmlWriter에 대한 링크를 추가했습니다. 도움이 된다니 다행 :) –

0

System.Xml.Serialization 네임 스페이스에 XmlSerializer 클래스를 사용하는 것이 좋습니다. microsoft 속성 정의를 사용할 수 있습니다. 그런 다음 구조 또는 클래스에 XML을 직렬화 및 비 직렬화 할 수 있습니다.

0

XDocumentSystem.Xml.Linq 네임 스페이스에서 찾으십시오. 이전 XmlDocument 클래스와 비교하여 XML 문서를 처리하기위한 새로운 API입니다. 그리고 일반적인 시나리오에서는 XmlDocument 또는 XmlReader과 비교하여 사용하기가 매우 쉽습니다. 사용 예 :

XDocument doc = XDocument.Load("path_to_xml_file.xml"); 
List<XElement> adds = doc.Descendants("locations").Elements("add"); 
foreach(XElement add in adds) 
{ 
    //get attribute of current <add> node, for example key & type attribute : 
    var key = (int)add.Attribute("key"); 
    var type = (string)add.Attribute("type"); 
    ..... 
} 
관련 문제