2017-02-16 1 views
1

Windows Form 응용 프로그램에서 작업하고 있습니다. 특정 XML 노드에 자식 노드가 있는지 확인하려고합니다. 코드의 첫 번째 줄에 OpenFileDialog를 사용하여 XML 파일을 엽니 다. 이 경우에는 아래의 xml 샘플을 사용하십시오. 내 창문 양식 응용 프로그램에서XMLNode. HasChild는 InnerText를 자식 노드로 간주합니다.

<bookstore> 
    <book category="cooking"> 
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
    </book> 
</bookstore> 

, 나는 TextBox1에는 xml 파일의 주소를 표시하는 데 사용되는 오픈 버튼을 모션 모든 설정, 오픈 버튼과 TextBox1에 있습니다. 어딘가에 코드에서 내가 다음 코드 줄이 있습니다

여기
using System; 
using System.Data; 
using System.Windows.Forms; 
using System.Xml; 
using System.IO; 

//other lines of code 
private void Open_XML_button_Click(object sender, EventArgs e) 
{ 
//other lines of code 
XmlDocument xmldoc = new XmlDocument(); 
string XML_Location; 

XML_Location = textBox1.Text; 
xmldoc.Load(XML_Location); 

string category = "category = 'cooking'"; 
XmlNode test1 = xmldoc.SelectSingleNode(string.Format("/bookstore/book[@{0}]/author", category)); 

if (test1.HasChildNodes == true) 
         { 
          MessageBox.Show("It has Child nodes"); 
         } 

         else 
         { 
          MessageBox.Show("it does not have Child nodes"); 
         } 
} 

내가, 내가, 지금까지 내가 말할 수있는, 아이가없는 저자 노드를 가리키는거야 이해하지 못하는 것입니다 노드하지만 내 코드는 그것을 않습니다; Giada de Laurentiis를 지우면 코드에 작성자 노드가 없다고 말할 것입니다

무엇이 잘못 되었나요?

답변

1

NodeTypeXmlNodeType.Text의없는 자식 노드가 있는지 여부를 확인할 수있다 : 나는 행복 해요

string category = "category = 'cooking'"; 
XmlNode test1 = xmldoc.SelectSingleNode(string.Format("/bookstore/book[@{0}]/author", category)); 
if (test1.ChildNodes.OfType<XmlNode>().Any(x => x.NodeType != XmlNodeType.Text)) 
{ 
    MessageBox.Show("It has Child nodes"); 
} 
else 
{ 
    MessageBox.Show("it does not have Child nodes"); 
} 
+0

코드는 당신이에 대한 변경과 함께 지금 작동 말은, 마지막 한가지 'x => x.NodeType! = XmlNodeType.Text'는 무엇을하고 있습니까? 그 람다 연산자/표현인가? –

+0

예, NodeType을 기반으로 ChildNodes 컬렉션을 필터링하는 람다 식으로 표현되는 Predicate 대리자입니다. https://msdn.microsoft.com/en-us/library/bfcke1bz(v=vs.110).aspx – mm8

관련 문제