2012-12-13 3 views
1

다음은 값을 사용하여 부모 노드를 가져 오는 XML 파일 및 함수입니다. 그러나 나는 부모 노드를 얻는 것을 당했다. vb.net을 사용하여 xml 파일에서 값의 부모 노드를 얻는 방법은 무엇입니까?

는 값 (133)은 "firstnode"를 반환한다 함수에 전달되면 및 124은 "secondnode"나는 부분을 수행

반환해야 함수에 전달 된 경우?

C#의 도움도 도움이 될 것입니다. 감사합니다

내 XML 파일 : vb.net에서

<sample> 
    <firstnode> 
     <id>133</id> 
    </firstnode> 
    <secondnode> 
     <id>124</id> 
    </secondnode> 
</sample> 

내 기능 :

Public Shared Function Get_NodeName_by_ID(ByVal ID As String) As String 
    Dim value As String = "" 
    Dim strPath = HttpContext.Current.Server.MapPath("~/" + ConfigurationManager.AppSettings("app_settings").ToString()) 
    Dim doc As New XmlDocument() 
    doc.Load(strPath) 

    Return value 
End Function 

답변

3

XPath는 귀하의 요구 사항에 따라 XML 문서를 조작하는 기능을 제공합니다. XPath 표현식을 사용하면이 작업을 수행 할 수 있습니다. 내 코드가 C#이므로 미안합니다. VB에서 변환해야합니다.

XPath 표현식 : 샘플/* [ID = 133]

C# 코드 :

//Load FileXML 
XmlDocument objFileXML = new XmlDocument(); 

objFileXML .Load(sFilePath); 

//For selecting nodes having given value 
XmlNodeList lstNodes = objFileXML .SelectNodes("sample/*[id=133]"); 

참고 : 동적으로 값을 넣어하려는 경우 당신이 어떤 변수를 넣을 수 있습니다. 그것은 당신의 VB 코드에있을 것입니다. 이 방법이 유용 할 것입니다.

+0

lstNodes.Count는 항상 0을 반환합니다. 위와 같은 코드를 사용했습니다. 무엇이 문제일까요? – Anuya

+0

xml 파일 구조가 위에 제공된 것과 동일해야합니다. 내 편이 그것을 시도하고 1을 반환합니다. objFileXML 제대로 파일을로드하는지 확인하려면 프로젝트를 디버깅하십시오. 파일을 올바르게로드하는 경우 값이 133 인 노드를 찾아야합니다. –

1

나를위한이 솔루션 워커.

Dim strPath = HttpContext.Current.Server.MapPath("~/" + ConfigurationManager.AppSettings("settings").ToString()) 
      Dim doc As New XmlDocument() 
      doc.Load(strPath) 

     Dim ParentNode As XmlNodeList = doc.GetElementsByTagName("id") 
     For Each node As XmlNode In ParentNode 
      If (ID.Equals(node.ChildNodes(0).Value)) Then 
       value = node.ParentNode.Name.ToString() 
      End If 
     Next 
관련 문제