Итак, я хочу получить доступ к дочернему элементу в структуре, которая выглядит следующим образом:
<asdf:foobar attr="value">
<child>...</child>
</asdf:foobar>
Я забыл, как называется asdf
, но именно это вызывает проблему.Мой обычный метод обхода в XLinq не работает:
xElem child = xDoc.Element("foobar");
Устанавливает child
в null
, потому что он утверждает, что нет элемента foobar
и
xElem child = xDoc.Element("asdf:foobar");
Не работает, потому что компилятор жалуется на точку с запятой.
Вся помощь приветствуется, и спасибо заранее!
ОБНОВЛЕНИЕ:
Я работал над воспроизведением этого в качестве примера (так как я не могу показать вам реальный код).Мой тестовый код:
Console.WriteLine("BEGIN TEST");
const string MY_SCHEMA = "http://www.example.com/whatever";
XElement xTest =
new XElement("{" + MY_SCHEMA + "}base",
new XAttribute("{" + XML_STANDARD + "}boofar", MY_SCHEMA),
new XAttribute("attr1", "val"),
new XElement("{" + MY_SCHEMA + "}asdf", "ghjkl")
);
result.Text = xTest.ToString();
XElement xOps2 = xTest.Element(XName.Get("asdf", MY_SCHEMA));
XElement xSubOps2;
if (xOps2 == null)
{
MessageBox.Show("Failure.");
}
else
{
xSubOps2 = xOps2.Element(XName.Get("asdf", MY_SCHEMA));
MessageBox.Show(xSubOps2.ToString());
}
Console.WriteLine("END TEST");
MessageBox.Show("END TEST");
Здесь отображается нужный мне XML:
<boofar:base xmlns:boofar="http://www.example.com/whatever" attr1="val">
<boofar:asdf>ghjkl</boofar:asdf>
</boofar:base>
И все работает отлично.Спасибо всем!