如何使用 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>
但是我无法将任务发送到 return 会话 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
没有指定名称空间。
我用谷歌搜索了一下,但我不明白为什么它不起作用...
您可以查看 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>
我正在尝试使用 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>
但是我无法将任务发送到 return 会话 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
没有指定名称空间。
我用谷歌搜索了一下,但我不明白为什么它不起作用...
您可以查看 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>