У меня есть XML-файл (test.xml), подобный этому:
<?xml version="1.0" encoding="ISO-8859-1"?>
<s2xResponse>
<s2xData>
<Name>This is the name</Name>
<InfocomData>
<DateOfUpdate day="07" month="02" year="2018">20180207</DateOfUpdate>
<CompanyName>MY COMPANY</CompanyName>
<TaxCode FlagCheck="0">XXXYYYWWWZZZ</TaxCode>
</InfocomData>
<AssessmentSummary>
<Rating Code="2">Rating Description for Code 2</Rating>
</AssessmentSummary>
<AssessmentData>
<SectorialDistribution>
<CompaniesNumber>11650</CompaniesNumber>
<ScoreDistribution />
<CervedScoreDistribution>
<DistributionData>
<Rating Code="1">SICUREZZA</Rating>
<Percentage>1.91</Percentage>
</DistributionData>
<DistributionData>
<Rating Code="2">SOLVIBILITA' ELEVATA</Rating>
<Percentage>35.56</Percentage>
</DistributionData>
</CervedScoreDistribution>
</SectorialDistribution>
</AssessmentData>
</s2xData>
</s2xResponse>
Я пытаюсь получить текст узла «Имя» («Это имя») с U-Сценарий SQL с использованием XmlExtractor.Ниже приведен код, который я использую:
USE TestXML; // It contains the registered assembly
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
@xml = EXTRACT xml_text string
FROM "textxpath/test.xml"
USING Extractors.Text(rowDelimiter: "^", quoting: false);
@xml_cleaned =
SELECT
xml_text.Replace("\r\n", "").Replace("\t", " ") AS xml_text
FROM @xml;
@values =
SELECT Microsoft.Analytics.Samples.Formats.Xml.XPath.Evaluate(xml_text, "s2xResponse/s2xData/Name")[1] AS value
FROM @xml_cleaned;
OUTPUT @values TO @"outputs/test_xpath.txt" USING Outputters.Text(quoting: false);
Но я получаю эту ошибку времени выполнения:
Выполнение завершилось с ошибкой '1_SV1_Extract Error:' {"диагностика-код": 195887116, "severity": "Error", "component": "RUNTIME", "source": "User", "errorId": "E_RUNTIME_USER_EXPRESSIONEVALUATION", "message": "Ошибка при оценке выражения Microsoft.Analytics.Samples.Formats.Xml.XPath.Evaluate (xml_text.Replace (\ "\ r \ n \", \ "\"). Заменить (\ "\ t \", \ "\"), \ "s2xResponse / s2xData / Name \") [1]", "description": "Внутреннее исключение из выражения пользователя: индекс находится вне диапазона. Должен быть неотрицательным и меньше размера коллекции.
Я получаюта же ошибка, даже если я использую нулевой индекс для результата оценки ([0]).
Что не так с моим запросом?