У меня есть документ XML, который я пытаюсь выполнить. Основная структура выглядит следующим образом:Linq to XML-запрос не принимает значения
<?xml version="1.0"?>
<!DOCTYPE ONIXMessage SYSTEM "http://www.editeur.org/onix/2.1/reference/onix-international.dtd">
<ONIXMessage xmlns="http://www.editeur.org/onix/2.1/reference" release="2.1">
<Header>
<FromCompany>MyCo</FromCompany>
<FromPerson>Joe Bloggs</FromPerson>
<FromEmail>[email protected]</FromEmail>
<SentDate>20120522</SentDate>
</Header>
<Product>
<ProductForm>DG</ProductForm>
<Title>
<TitleType>01</TitleType>
<TitleText>Blogg</TitleText>
</Title>
<WorkIdentifier>
<WorkIDType>15</WorkIDType>
<IDValue>PI3564231</IDValue>
</WorkIdentifier>
<Language>
<LanguageRole>01</LanguageRole>
<LanguageCode>eng</LanguageCode>
</Language>
</Product>
</ONIXMessage>
Это, очевидно, укорачивается вниз для простоты, но внутри тега «продукта», есть гораздо больше информации. Файл также может содержать любое количество тегов «Продукт».
Я использую linq для xml для поиска этого документа и получения содержимого в моей базе данных, однако моя проблема заключается в том, что мой запрос не собирает теги «Продукт» в файле. Вот фрагмент кода, где продукт должен быть подобран:
XElement onix = XElement.Load(fs);
// Get all the product information.
//
var products = from prod in onix.Elements("Product") select prod;
foreach (var product in products)
{
//Process product
}
После отлажена через код, я могу видеть, что переменная «оникс» заселяется. Я могу видеть все содержимое файла в этой переменной. Однако «продукты» не заселены.
Может ли кто-нибудь увидеть, есть ли что-то, что я делаю неправильно?
Я думаю, вам нужно будет добавить пространство имен для запроса файла XML, как [имен + "Продукт"] – V4Vendetta