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를 지우면 코드에 작성자 노드가 없다고 말할 것입니다
무엇이 잘못 되었나요?
코드는 당신이에 대한 변경과 함께 지금 작동 말은, 마지막 한가지 'x => x.NodeType! = XmlNodeType.Text'는 무엇을하고 있습니까? 그 람다 연산자/표현인가? –
예, NodeType을 기반으로 ChildNodes 컬렉션을 필터링하는 람다 식으로 표현되는 Predicate 대리자입니다. https://msdn.microsoft.com/en-us/library/bfcke1bz(v=vs.110).aspx –
mm8