2015-06-22 6 views
1

Используя следующий пример XML, содержащий один дубликат:Ошибка при построении XDocument

<Persons> 
    <Person> 
    <PersonID>7506</PersonID> 
    <Forename>K</Forename> 
    <Surname>Seddon</Surname> 
    <ChosenName /> 
    <MiddleName /> 
    <LegalSurname /> 
    <Gender>Male</Gender> 
    </Person> 
    <Person> 
    <PersonID>6914</PersonID> 
    <Forename>Clark</Forename> 
    <Surname>Kent</Surname> 
    <ChosenName>Clark</ChosenName> 
    <MiddleName /> 
    <LegalSurname>Kent</LegalSurname> 
    <Gender>Male</Gender> 
    </Person> 
    <Person> 
    <PersonID>6914</PersonID> 
    <Forename>Clark</Forename> 
    <Surname>Kent</Surname> 
    <ChosenName>Clark</ChosenName> 
    <MiddleName /> 
    <LegalSurname>Kent</LegalSurname> 
    <Gender>Male</Gender> 
    </Person> 
</Persons> 

У меня есть следующий код, где я пытаюсь построить XDocument с выходом запроса XPath, который фильтрует повторяющиеся элементы:

string outputXml = null; 
var original = XDocument.Parse(xmlString); 
string xpathFilterDups = "//Person[not(PersonID = following::Person/PersonID)]"; 
XDocument people = new XDocument("Persons", original.XPathSelectElements(xpathFilterDups)); 
outputXml = people.ToString(); 

Я получаю ошибку:

An exception of type 'System.ArgumentException' occurred in System.Xml.Linq.dll but was not handled in user code

Символы без пробела не могут быть добавлены в контент.

На этой линии:

XDocument people = new XDocument("Persons", original.XPathSelectElements(xpath)); 

Что я делаю не так? : - \

ответ

3

Вы можете игнорировать довольно много весь код, этот вопрос просто так:

XDocument people = new XDocument("Persons"); 

Вы не можете создать XDocument, содержащий строку, необходимо добавить элемент:

XDocument people = new XDocument(
    new XElement("Persons", 
     original.XPathSelectElements(xpathFilterDups))); 
+0

Работал отлично! Благодаря! –

Смежные вопросы