2010-10-03 37 views
5

Tôi muốn biết làm thế nào tôi có thể kiểm tra tình hình fallowing:Làm cách nào để kiểm tra xem phần tử XML có phần tử văn bản bên trong không?

<foo> 
    <bla1>xxx</bla1> 
    <bla2>yyy</bla2> 
    <bla3>zzz</bla3> 
</foo> 

Trong khi (reader.Read()), tôi thả trong XmlNodeType.Element khi tôi đang ở foo và bla1, bla2, bla3 ... Khi thả trong .TextElement trong xxx, yyy, zzz. Nhưng tôi có thể kiểm tra nếu bla sẽ có giá trị văn bản bên trong hay không?

Cảm ơn rất nhiều

Pedro Dusso

Trả lời

2

Không, bạn không thể miễn là bạn đang sử dụng một XmlReader.

Lớp XmlReader triển khai con trỏ chuyển tiếp thông qua chế độ xem lại XML. Như vậy bạn chỉ có thể hoạt động trên nút XML được tìm thấy ở vị trí hiện tại.

Trong trường hợp của bạn, điều này có nghĩa là bạn sẽ không thể kiểm tra nội dung của các nút "bla" mà không cần lặp lại thông qua chúng.

+0

Bạn nói đúng, nhưng tôi đang sử dụng XmlTextReader trong thực tế, xin lỗi tôi đã không viết nó trước. –

+0

Nguyên tắc tương tự cũng đúng với XmlTextReader. Con trỏ chỉ chuyển tiếp sẽ chỉ cho phép bạn kiểm tra nút hiện đang được truy cập. Nếu bạn muốn truy vấn một hệ thống phân cấp XML, bạn sẽ phải nạp nó vào một cấu trúc DOM trong bộ nhớ, chẳng hạn như lớp XmlDocument hoặc lớp XDocument. –

+0

Yeap ... Tôi hiểu rồi. Tôi sẽ phải suy nghĩ về nó. Chúng tôi có nghĩa vụ phải xử lý một tập tin XML 700MB, vì vậy tôi sẽ không thể tải nó trong bộ nhớ ... Thanks anyway man! –

0

Nếu bạn đang sử dụng một XmlTextReader bạn có thể sử dụng thuộc tính IsEmptyElement

+0

Điều này không làm việc trong thực tế ... các IsEmptyElement hoạt động chỉ cho , khi nó trở thành sự thật. Thanks anyway ... –

0

Bất kỳ điều gì sai với trình đọc.HasValue? (hoặc string.IsNullOrEmpty (reader.Value))?

Các vấn đề liên quan