Я получаю некоторые XML-данные в виде строки из базы данных. Данные сохраняются как ntext в базе данных.Исключительное исключение ссылки - XDocument с использованием Element и XPath
Получение данных из базы данных не является проблемой. Проблема позже, когда я хочу обрабатывать данные в xml. Я загружаю строку в xDocument.
Я хочу сначала получить значение Владельца. Но я получаю исключение с нулевой ссылкой, а это значит, что я не пишу правильный Xpath, я предполагаю.
Запись "./Owner" не работает. Написание «/./Owner» не работает, я получаю исключение XML.
Я начал с XMLDocument, но думаю, что столкнулся с проблемой пространства имен. Началось чтение и похоже, что лучше использовать xDocument. Как вы также можете видеть по моему коду, я попытался получить значение «Владелец» двумя способами: оба сбой.
Мой XML выглядит как это:
<Container xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="DM">
<IsConsigned>false</IsConsigned>
<LockState>Unlocked</LockState>
<SourceType i:nil="true" />
<Id>04216194-4f62-47ee-ab21-c1053d01bf1e</Id>
<Owner>IN</Owner>
<Created>2012-08-21T09:29:10.528321+02:00</Created>
</Container>
И мой код:
class Program
{
static SqlConnection conn = new SqlConnection();
static XDocument xml = new XDocument();
static void Main(string[] args)
{
using (conn)
{
conn.ConnectionString = Properties.Settings.Default.connectionString;
//connection.Open();
conn.Open();
SqlDataReader reader = GetDataFromDatabase();
if (reader.HasRows)
{
while (reader.Read())
{
string xmlFile = reader.GetSqlString(0).ToString();
HandleData(xmlFile);
}
}
else
{
Console.WriteLine("No rows found.");
}
reader.Close();
}
}
public static void HandleData(string xmlIn)
{
xml = XDocument.Parse(xmlIn);
XElement xmlElement = xml.Root;
string test1 = xml.Element("Owner").Value.ToString();
string test = xmlElement.Element("Owner").Value.ToString();
}
}
Спасибо! Так оно и было. Я понимаю, что я кое-что читаю в отношении пространств имен. Как вы видите в моем первом посте, я столкнулся с проблемами пространства имен с XMLDocument, но не понял, как я мог его решить. С вашей помощью я все равно нахожусь на правильном пути. Подробнее о пространствах имен и префиксах читаю. Еще раз спасибо! – Dreas89