Я пытаюсь проанализировать следующий XML-файл, и ничего не приводит к чему-либо, кроме корня или первого.Не удается получить доступ к XML с Linq
<?xml version="1.0" encoding="utf-8" ?>
<Report {attributes}>
<table1>
<Detail_Collection>
<Detail {attributes} />
<Detail {attributes} />
<Detail {attributes} />
</Detail_Collection>
</table1>
</Report>
Я пытаюсь получить список Детали так что я могу получить значение атрибутов, но все, что я пробовал результаты без каких-либо данных. Моя последняя попытка это один ...
var xml= XDocument.Load(FileDetails.FullName);
var xml1 = XDocument.Parse(xml.Root.FirstNode.ToString());
var xml3 = from e in custs.Root.Elements("Detail") select e;
var xml4 = from e in xml1.Elements("Detail") select e;
Различные попытки
var xml = XDocument.Load(FileDetails.FullName);
var root = xml.Root;
var els = root.Descendants("Detail");
Вышеприведенные отображается в окне Immediate:
root.Descendants ("Detail") {System .Xml.Linq.XContainer.GetDescendants} имя: null self: false System.Collections.Generic.IEnumerator.Current: нуль System.Collections.IEnumerator.Current: нуль
Проблема с атрибутами в Отчете элемента:
<Report p1:schemaLocation="Info_x0020_Tickets_x0020_Entered http://domain/ReportServer?%2fInfo+Reporting%2fInfo+Tickets+Entered&rs%3aCommand=Render&rs%3aFormat=XML&rs%3aSessionID=vcvb0p452bb3na45havjes55&rc%3aSchema=True" Name="Info Tickets Entered" textbox9="1247" xmlns:p1="http://www.w3.org/2001/XMLSchema-instance" xmlns="Info_x0020_Tickets_x0020_Entered">
Это из SQL Server Reporting Server, мне придется удалите один за другим и найдите виновника.
Это окончательное решение этой проблемы Там может быть лучше, но после загрузки данных вы не можете легко удалить пространство имен.
//load the original document
var xml = XDocument.Load(FileDetails.FullName);
//remove all the superflouos data attributes
xml.Root.RemoveAttributes();
//turn into a string
var content = xml.Root.ToString();
//remove the official namespace, there is no easy way to remove the namespace after document has been loaded, so we'll replace it
var newXmlContent = content.Replace("<Report xmlns=\"Info_x0020_Tickets_x0020_Entered\">", "<Report>");
//parse the updated string into a workable document
var newXml = XDocument.Parse(newXmlContent).Root;
Это возвращает новый XML-документ, который можно обрабатывать в обычном режиме.
Каковы атрибуты? – SLaks 2010-12-09 16:24:07
Проблема заключается в атрибутах для * Report * – 2010-12-09 16:25:58
Каковы атрибуты в XML? – SLaks 2010-12-09 16:28:59