【问题标题】:How to get an XML node using a SSIS XPATH XML task如何使用 SSIS XPATH XML 任务获取 XML 节点
【发布时间】:2015-10-03 07:02:40
【问题描述】:

我正在尝试使用 SSIS 中的 XML 任务从该 XML 中获取会话 ID 值:

<?xml version="1.0" encoding="utf-16"?>
<AuthenticationResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <authenticated xmlns="[link]">true</authenticated>
    <sessionId xmlns="[link]">0000-0000000-00000000000-000000</sessionId>
    <loginid xmlns="[link]">000000</loginid>
    <login_name xmlns="[link]">[Username]</login_name>
    <user_nbr xmlns="[link]">0000</user_nbr>
    <partition_id xmlns="[link]">3</partition_id>
    <is_parent_mail_user xmlns="[link]">0</is_parent_mail_user>
    <parent_user_id xmlns="[link]" />
    <user_id xmlns="[link]">[username]</user_id>
</AuthenticationResult>

但是我无法获得返回会话 ID 的任务

任务设置:

Operation Type: XPATH
SourceType: File connection
Source: testfile.xml

SaveOperationResult: True
DestinationType: Variable
Destination: User::SessionID
OverwriteDestination: True

SecondOperandType: Direct input
SecondOperand: //sessionId

Namespaces: (Collection)
PutResultsInOneNode: False
XPathOperation: Values

没有指定名称空间。

我用谷歌搜索了所有地方,但我无法弄清楚为什么它不起作用......

【问题讨论】:

    标签: xml xpath ssis xmltask


    【解决方案1】:

    您可以查看this answer 以获取有关 XPath 语法的建议。 基本上,您可以使用 local-name() 来读取没有命名空间的元素名称。 您应该能够通过以下方式提取此会话 ID 值:

     <local name="sessionId"/>
     <xmltask source="${xml.file}">
        <copy path="/*[local-name()='AuthenticationResult']/*[local-name()='sessionId']/text()"
              property="sessionId"/>
     </xmltask>
     <echo message="sessionId = ${sessionId}"/>
    

    或者,下面的简化语法可能工作:

     <xmltask source="${xml.file}">
        <copy path="//:AuthenticationResult/:sessionId/text()"
              property="sessionId"/>
     </xmltask>
    

    【讨论】:

    • 这个答案很有帮助,因为操作数起作用了:/*/*[local-name()='sessionId'] 谢谢
    • 太棒了!我用我之前的答案修复了几个语法问题,这可能是它们不能直接工作的原因。我对此感到抱歉,但希望其他人可以使用它。感谢您接受一个不完美的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2017-10-21
    • 1970-01-01
    • 2014-01-26
    • 2011-07-19
    • 2014-08-17
    相关资源
    最近更新 更多