2009-03-23 4 views
1

내 코드 : 내의 Web.config에서는 C#에서 XML 문서에 대한 부모 노드를 만들기

// Read in Xml-file 
XmlDocument doc = new XmlDocument(); 
doc.Load("C:/Web.config"); 

XmlNode d = doc.SelectSingleNode("/configuration"); 
XmlNode MYNODE = doc.CreateNode("element", "connectionStrings", ""); 

//newParent.(childNode); 
d.AppendChild(MYNODE); 

//Saving the document 
doc.Save("C:/Web.config"); 

MyOutput :

<connectionStrings /> 

내가 실제로 내의 Web.config에서 원하는 출력 :

<connectionStrings> 

</connectionStrings> 

올바른 결과를 얻으려면 코드에서 어떤 내용을 변경해야합니까? 또한, 태그를 다른 태그 바로 위에 나타나게하려면 어떻게해야합니까? --SharePoint-- 태그라고 말하십시오.

안부 티엔

+0

질문하기; something like : sharePoint.InsertAfter (MYNODE); –

답변

1

둘 다 잘 구성된 xml 형식입니다.

하지만 추가 된 하위 노드에 새 하위 노드를 추가하면 원하는 것을 얻을 수 있습니다. ..

XmlNode MYNODE = doc.CreateNode("element", "connectionStrings", ""); 
MYNODE.InnerText = " "; 

이 연결 문자열 요소의 실제 사용에 영향을주지 않습니다하지만 당신이 원하는대로 출력 될 것입니다 : 예를 들어 단지 connectionstrings 노드 내로 공간을 추가 할 수 있습니다.

+0

감사합니다! – Etienne

2

는 출력은 정확하다. connectionStrings 태그 안에 하위 요소가 없기 때문에 빈 태그로 렌더링됩니다.

<connectionStrings /><connectionStrings></connectionStrings>과 같은 의미입니다.

XmlNode sharePoint = doc.SelectSingleNode("SharePoint"); 
XmlNode MYNODE = doc.CreateNode("element", "connectionStrings", ""); 

doc.InsertBefore(MYNODE, sharePoint); 
+0

doc.InsertBefore (MYNODE, sharePoint) 사용; 작동하지 않습니까? – Etienne

1

모두 <ConnectionStrings>이 같은 것 같다

특정 노드 앞에 태그를 삽입 할 경우

InsertBefore 방법을 사용합니다. 당신은 당신의 노드의 위치를 ​​ AppendChild() 또는 InsertBefore() 또는 InsertAfter() 방법을 사용할 수 있습니다 <connectionStrings /><connectionStrings></connectionStrings>.

에는 차이가 없습니다.

1

요소에 공백 텍스트를 추가 할 수 있습니까?

MYNODE.InnerText = " "; 

또는 다른 콘텐츠 - 아마도 덧글을? 어떤 내용이 없으면,이 두 형태는 거의 동일합니다. 은 "태그"질문을 다시

- 당신이 그것을에 인접하고 그 중 하나를 사용 할 노드를 찾을 수 - 당신이 무슨 뜻인지 달려있다 ...하지만 XmlNodeInsertBeforeInsertAfter 있습니다.

+0

답장을 보내 주셔서 감사합니다 .... 어떻게 내 코드에서 InsertBefore 사용할 것이라고 .... 나는 몇 가지 시도했지만 오류가 계속. – Etienne

+0

시도해보십시오 sharePoint.InsertAfter (MYNODE); –

+0

아니요, 오류 : "메서드에 대한 오버로드가 없습니다. InsertBefore는 '1'을 취합니다. arfument – Etienne

0
XmlNode root = doc.DocumentElement; 
root.InsertAfter(connNODE, root.FirstChild); 

이것은 올바른 지점에 내 노드를 배치하기 위해해야 ​​할 일입니다. 도움을 주신 모든 분들께 감사드립니다. 에티엔 느

0

미안의 후반하지만이 게시물 답장 자신을 물을 수 없습니다 : 데이터베이스에서 얻을

XmlNode xNode = xDoc.CreateNode("element", "FundDetails", ""); // Parent node to insert 
xDoc.InsertBefore(xNode, xDoc.ParentNode); // inserting parent node to existing XML document 
0

이 코드 도움말 부모 노드 더 많은 데이터를. 당신이 당신의 추가 된 자식 노드에 새 차일을 추가하는 경우

XmlNode dataNode = doc.CreateNode(XmlNodeType.Element, "connectionstrings", null); 
       root.PrependChild(dataNode); 
       for (int i = 1; i < root.ChildNodes.Count; i++) 
       { 
        dataNode.AppendChild(root.ChildNodes[i]); 
        i--; 
       } 

, 당신은 당신이 원하는 것을 얻을 수 있습니다. 예를 들어 connectionstrings 노드에 NULL을 추가하기 만하면됩니다.

관련 문제