У меня возникли проблемы с использованием LINQ to XML для чтения моего XML-файла. Я приложил часть схемы xml.
<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mstns="http://tempuri.org/sdnList.xsd" xmlns="http://tempuri.org/sdnList.xsd" elementFormDefault="qualified" targetNamespace="http://tempuri.org/sdnList.xsd" id="sdnList">
-<xs:element name="sdnList">
-<xs:complexType>
-<xs:sequence>
-<xs:element name="publshInformation" maxOccurs="1">
-<xs:complexType>
-<xs:sequence>
<xs:element name="Publish_Date" maxOccurs="1" minOccurs="0" type="xs:string"/>
<xs:element name="Record_Count" maxOccurs="1" minOccurs="0" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
-<xs:element name="sdnEntry" maxOccurs="unbounded">
-<xs:complexType>
-<xs:sequence>
<xs:element name="uid" type="xs:int"/>
<xs:element name="firstName" minOccurs="0" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
<xs:element name="title" minOccurs="0" type="xs:string"/>
<xs:element name="sdnType" type="xs:string"/>
<xs:element name="remarks" minOccurs="0" type="xs:string"/>
....CONTINUES FROM HERE
Код, который я использую, выглядит следующим образом.
XDocument doc = XDocument.Load("c:/OFACTemp/sdn.xml");
var sdnEntry = from item in doc.Root.Descendants("sdnEntry")
select new
{
uid = item.Element("uid").Value,
firstName = item.Element("firstName").Value
};
string test = "";
foreach (var p in sdnEntry)
test = "Id: " + p.uid + " First Name: " + p.firstName;
Когда я прерываю код, документ загружается нормально, и я вижу правильные данные. Doc.Root заполнен, но Descendants, кажется, ничего не имеет. Затем, дойдя до моего оператора foreach, sdnEntry не дает никаких результатов. Это кажется таким простым, но я не могу понять, почему я не могу ничего выбрать. Я также пытался использовать элементы вместо потомков и тот же результат. Конечный результат. Мне нужно взять XML и создать объекты C#.
Кроме того, возникает побочный вопрос: как будет обрабатываться sdnEntry, если некоторые sdnEntry имеют, например, имя, а другие — нет? Если для sdEntry не существует имени, то тег элемента firstName даже не существует в XML-файле. Любая помощь будет принята с благодарностью.
Вот образец xml.
<?xml version="1.0" standalone="true"?>
-<sdnList xmlns="http://tempuri.org/sdnList.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<publshInformation>
<Publish_Date>05/16/2013</Publish_Date>
<Record_Count>5493</Record_Count>
</publshInformation>
-<sdnEntry>
<uid>10</uid>
<lastName>ABASTECEDORA NAVAL Y INDUSTRIAL, S.A.</lastName>
<sdnType>Entity</sdnType>
-<programList>
<program>CUBA</program>
</programList>
-<akaList>
-<aka>
<uid>4</uid>
<type>a.k.a.</type>
<category>strong</category>
<lastName>ANAINSA</lastName>
</aka>
</akaList>
-<addressList>
-<address>
<uid>7</uid>
<country>Panama</country>
</address>
</addressList>
</sdnEntry>
sdnEntry
, тогда как в вашем XML есть элементы с именемelement
с атрибутами с именемname
, которые имеют значенияsdnEntry
- person paul   schedule 24.05.2013