Tôi muốn lấy giá trị từ tệp XML nhưng không thành công. Bạn có thể vui lòng giúp tôi chỉ ra vấn đề không ?? Bởi vì tôi đã cố gắng rất nhiều để thử nghiệm và googling nhưng tôi vẫn không thể phát hiện vấn đề.C# XmlDocument SelectNodes không hoạt động
XML:
<?xml version="1.0" encoding="utf-8" ?>
<Contacts>
- <Contact>
<ID>xxx</ID>
<AutoUpdateEnabled>false</AutoUpdateEnabled>
<LastChanged>2013-05-29T01:53:59.4470000Z</LastChanged>
- <Profiles>
- <Personal>
<FirstName>My First Name</FirstName>
<LastName>My Last Name</LastName>
<UniqueName>My Unique Name</UniqueName>
<SortName></SortName>
<DisplayName>My Display Name</DisplayName>
</Personal>
</Profiles>
- <Phones>
- <Phone>
<ID>3</ID>
<PhoneType>Mobile</PhoneType>
<Number>000-0000000</Number>
<IsIMEnabled>false</IsIMEnabled>
<IsDefault>false</IsDefault>
</Phone>
</Phones>
- <Locations>
- <Location>
<ID>2</ID>
<LocationType>Business</LocationType>
<CompanyName></CompanyName>
<IsDefault>false</IsDefault>
</Location>
</Locations>
</Contact>
- <Contact>
<ID>xxx</ID>
<AutoUpdateEnabled>false</AutoUpdateEnabled>
<LastChanged>2013-05-29T01:53:25.2670000Z</LastChanged>
- <Profiles>
- <Personal>
<FirstName>Person</FirstName>
<LastName>Two</LastName>
<UniqueName></UniqueName>
<SortName></SortName>
<DisplayName>Person Two</DisplayName>
</Personal>
</Profiles>
- <Emails>
- <Email>
<ID>1</ID>
<EmailType>Personal</EmailType>
<Address>[email protected]</Address>
<IsIMEnabled>false</IsIMEnabled>
<IsDefault>true</IsDefault>
</Email>
</Emails>
- <Locations>
- <Location>
<ID>2</ID>
<LocationType>Business</LocationType>
<CompanyName>Testing Company</CompanyName>
<IsDefault>false</IsDefault>
</Location>
</Locations>
</Contact>
</Contacts>
My Sample Code:
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml("TheXMLFile.xml");
xmldoc.DocumentElement.SelectNodes("contact") // return 0 counts
xmldoc.DocumentElement.SelectNodes("/contact") // return 0 counts
xmldoc.DocumentElement.SelectNodes("/contact") // return 0 counts
xmldoc.DocumentElement.SelectNodes("/contacts/contact") // return 0 counts
xmldoc.DocumentElement.SelectNodes("*") // return 2 counts !this works
XmlNodeList elemList = xmldoc.DocumentElement.GetElementsByTagName("contact"); // return 2 counts !this also works
foreach (XmlNode node in elemList)
{
node.SelectSingleNode("Profiles") //return ""
node.SelectSingleNode("/Profiles") //return ""
node.SelectSingleNode("//Profiles") //return ""
node.SelectSingleNode(".//Profiles") //return ""
}
Tôi chỉ muốn để có được "FirstName, LastName, Địa chỉ Email", các SelectNodes
chức năng chỉ không làm việc như mong đợi ... Không đầu mối ở tất cả ... xin vui lòng giúp đỡ. Cảm ơn trước
tôi có thể sử dụng vòng lặp foreach cho "Liên hệ" và sau đó chọn một email duy nhất trong vòng lặp ?? – user2402624
@ user2402624: nếu bạn chỉ muốn một e-mail đơn lẻ (có thể nhiều) - có, bạn có thể làm điều đó. –
Tôi biết đây là một bài đăng cũ, nhưng từ những gì tôi có thể thấy, LoadXML không hoạt động nếu bạn muốn SelectNodes từ một XMLNodeList (với các câu lệnh Xpath). Tôi nhận được kết quả tương tự - 0 bất kể tôi đã sắp xếp Xpath như thế nào. Có sửa chữa lỗi này không? – MC9000