2012-08-07 5 views
1

이미 생성 된 부모 노드에 XML 데이터를 추가하고 특정 부모 노드 아래에 배치 할 수 있어야합니다.특정 부모 노드에 XML 데이터 추가

아무에게도 최선의 방법을 제안 할 수 있습니까?

XMLWriter을 사용하여 원본 XML 파일을 만들었습니다.

XmlDocument doc = new XmlDocument(); 
      doc.Load(filePath); 
      for (int counter=0; counter<registeredEventCount; counter++) 
      { 

       try 
       { 
        XmlNode checkEvent = doc.SelectSingleNode("Event/Event[@id='" + registeredArrayList[counter] + "']"); 
        if (checkEvent != null) 
        { 
         try 
         { 
          XmlNode checkDog = doc.SelectSingleNode("Event/Event[@id='" + registeredArrayList[counter] + "']/Dog[@id='" + ukcNumberArrayList[counter] + "']"); 

          if (checkDog == null) 
          { 



           XmlElement newDogId = doc.CreateElement("Dog"); 
           newDogId.SetAttribute("id", ukcNumberArrayList[counter].ToString()); 
           XmlElement newDogName = doc.CreateElement("dogName"); 
           newDogName.SetAttribute("id", dogNameArrayList[counter].ToString()); 
           XmlElement newDogBreed = doc.CreateElement("breed"); 
           newDogBreed.SetAttribute("id", breedArrayList[counter].ToString()); 
           checkEvent.AppendChild(newDogId); 
           newDogId.AppendChild(newDogName); 
           newDogId.AppendChild(newDogBreed); 
           doc.Save(filePath); 
          } 
          else 
          { 
           MessageBox.Show("You have already registered this dog for this specific event"); 
          } 
         } 
+0

실제로 작동하지 않는 것을 지정하십시오. checkDog가 있지만 사용하지 마십시오. 정말로 checkEvent가! = null입니까? –

+0

위 코드 만 작동하지 않습니다. 나머지는 무시하십시오. 예 XML 파일을 먼저로드하고 있습니다. – user1546315

+0

하지만 이제는 checkEvent가 무엇인지 편집하여 질문이 모호 해집니다. 디버깅 할 때 checkEvent 아래에 새 요소가 나타납니다. –

답변

1

편집 : 코드가 바뀌면서 이전 답변이 유효하지 않게되었습니다. 어쨌든 Visual Studio에서 코드를 테스트했습니다. 그것은 효과가 있었다.

<Event> 
    <Event id="0"> 
    <Dog id="1"> 
     <dogName id="2" /> 
     <breed id="3" /> 
    </Dog> 
    </Event> 
</Event> 

내 생각 엔 당신은 IFS에있는 당신의 XML 파일과 코드에서 뭔가 잘못 실행되지 않습니다를 가지고있다 :

<Event> 
    <Event id="0"> 

    </Event> 
</Event> 

및 출력 : 여기 내 입력 XML 파일입니다. 나는 XmlSerializer가 더 좋고, 간단한 XML 작성/업데이트를위한 오류가 발생하기 쉬운 방법이 없다고 생각한다.

+0

예 파일이로드되었습니다. 위에서 XML 파일을로드하는 코드가 있습니다. 위의 코드를 복사하여 붙여 넣으면 excute 된 if 문에 == null이 대신 실행됩니다. 문제는 코드 avobe가 XML 파일을 편집하기 위해 작동하지 않는다는 것입니다. – user1546315

+0

흥미 롭니까? 기존 XML 파일에 추가 할 수있었습니다. 내 XML 파일이 숨겨져 있다면 문제가 될 수 있습니까? – user1546315

+0

중요하지 않습니다. doc.Load()가 Exception을 발생시키지 않으면 파일이로드됩니다. 그 코드를 확인 했습니까? 최대 Save() 메소드가 실행 되었습니까? exeption없이 Save()를 실행하면 파일을 갱신해야합니다. 샘플 입력 XML을 추가 할 수 있습니까? – Varius

관련 문제