繁体   English   中英

如何使用SSIS XPATH XML任务获取XML节点

[英]How to get an XML node using a SSIS XPATH XML task

我试图在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

没有指定名称空间。

我到处搜索过,但我不知道为什么它不起作用...

您可以查看此答案以获取有关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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM