【发布时间】:2018-06-08 13:47:00
【问题描述】:
我有一个这样的 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>
我正在尝试通过使用 XmlExtractor 的 U-SQL 脚本获取“名称”节点文本(“这是名称”)。以下是我正在使用的代码:
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 错误: '{"diagnosticCode":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":"内部异常来自 用户表达式:索引超出范围。必须是非负数且小于 比集合的大小。
即使我对 Evaluate 结果 ([0]) 使用零索引,我也会得到相同的错误。
我的查询有什么问题?
【问题讨论】:
标签: xpath azure-data-lake u-sql