从格式为 XML 的信息路径获取节点数据
Getting node data from infopath formatted XML
我需要从信息路径中的已知节点获取数据 xml。当我期待“140x”时,我有以下代码 Facility returns nothing。一旦我获得了这个密钥,我就可以为我的每个节点创建像 my:CompletedByRpt 这样的兄弟节点。 :( 它必须在 IE10+ 中工作 #FeelMyPain
var xmlDoc = $.parseXML(xml); // In debugger I have the xml here.
var $xml = $(xmlDoc);
Facility = $xml.find('my:cover').find('my:Facility').text();
$("#Facility").append('Facility =' + Facility );
使用这个我无法控制的 xml 来源:(我把它变小了一点,擦洗了一下)
<?xml version="1.0" encoding="UTF-8"?>
<?mso-infoPathSolution name="urn:schemas-microsoft-com:office:infopath:PortWineSurvey-Template:-myXSD-2012-11-20T17-06-24" PIVersion="1.0.0.0" href="https://foo.com/Form%20Templates/PortWineSurvey_Template.xsn" productVersion="14.0.0" solutionVersion="1.0.0.583" ?>
<?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.3"?>
<my:myFields
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"
xmlns:ma="http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes"
xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields"
xmlns:q="http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields"
xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution"
xmlns:dms="http://schemas.microsoft.com/office/2009/documentManagement/types"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-11-20T17:06:24"
xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<my:Cover>
<my:winery>39B</my:winery>
<my:Facility>140x</my:Facility>
<my:FacilityTypeGroup>
<my:FacilityType></my:FacilityType>
<my:FacilityType>1</my:FacilityType>
<my:FacilityType>4</my:FacilityType>
<my:FacilityType>8</my:FacilityType>
<my:FacilityType>2</my:FacilityType>
<my:FacilityType>16</my:FacilityType>
</my:FacilityTypeGroup>
<my:OtherFacilityType>false</my:OtherFacilityType>
<my:OtherFacilityTypeComments></my:OtherFacilityTypeComments>
<my:CompletedByRpt>
<my:CompletedByRpt_Title>The</my:CompletedByRpt_Title>
<my:CompletedByRpt_Name>Man</my:CompletedByRpt_Name>
</my:CompletedByRpt>
<my:CompletedByRpt>
<my:CompletedByRpt_Title>The Other</my:CompletedByRpt_Title>
<my:CompletedByRpt_Name>Man</my:CompletedByRpt_Name>
</my:CompletedByRpt>
<my:FacilityOperator_Type>Private</my:FacilityOperator_Type>
<my:NameOfPFSORpt>
<my:NameOfPFSORpt_Title>Sr.</my:NameOfPFSORpt_Title>
<my:NameOfPFSORpt_Name>Inigo Montoya</my:NameOfPFSORpt_Name>
<my:NameOfPFSORpt_Pos>My big title</my:NameOfPFSORpt_Pos>
<my:NameOfPFSORpt_Org>My cool workplace</my:NameOfPFSORpt_Org>
</my:NameOfPFSORpt>
<my:FacilityOwner_Type>Private</my:FacilityOwner_Type>
</my:Cover>
<my:FVF>
<my:FVF_Compliance>2</my:FVF_Compliance>
</my:FVF>
<my:PVFU>
<my:PVFU_Applicable>true</my:PVFU_Applicable>
<my:PVFU_Suggestions></my:PVFU_Suggestions>
</my:PVFU>
<my:ICIO>
<my:ICIO_Application>ipsum</my:ICIO_Application>
<my:ICIO_ApprovedPFSP>2</my:ICIO_ApprovedPFSP>
</my:ICIO>
<my:Q1>
<my:Q1_Ans>
<my:Q1_Ans_A>0</my:Q1_Ans_A>
<my:Q1_Ans_B>0</my:Q1_Ans_B>
<my:Q1_Ans_C>0</my:Q1_Ans_C>
<my:Q1_Ans_D>0</my:Q1_Ans_D>
<my:Q1_Ans_E>0</my:Q1_Ans_E>
<my:Q1_Ans_F>1</my:Q1_Ans_F>
</my:Q1_Ans>
<my:Q1_Ans_Val>0</my:Q1_Ans_Val>
<my:Q1_Confidence>1</my:Q1_Confidence>
<my:Q1_Comment>Some comments</my:Q1_Comment>
</my:Q1>
</my:myFields>
在此先感谢您的耐心等待和帮助。
您的问题是冒号 (:
) 在 jQuery 选择器中是一个特殊字符。它用于表示以下字符序列是伪选择器,例如。 :first
或 :eq()
.
要防止这种行为,您需要通过在 :
前面添加 \
来转义 :
,如下所示:
Facility = $xml.find('my\:cover').find('my\:Facility').text();
$("#Facility").append('Facility =' + Facility );
我需要从信息路径中的已知节点获取数据 xml。当我期待“140x”时,我有以下代码 Facility returns nothing。一旦我获得了这个密钥,我就可以为我的每个节点创建像 my:CompletedByRpt 这样的兄弟节点。 :( 它必须在 IE10+ 中工作 #FeelMyPain
var xmlDoc = $.parseXML(xml); // In debugger I have the xml here.
var $xml = $(xmlDoc);
Facility = $xml.find('my:cover').find('my:Facility').text();
$("#Facility").append('Facility =' + Facility );
使用这个我无法控制的 xml 来源:(我把它变小了一点,擦洗了一下)
<?xml version="1.0" encoding="UTF-8"?>
<?mso-infoPathSolution name="urn:schemas-microsoft-com:office:infopath:PortWineSurvey-Template:-myXSD-2012-11-20T17-06-24" PIVersion="1.0.0.0" href="https://foo.com/Form%20Templates/PortWineSurvey_Template.xsn" productVersion="14.0.0" solutionVersion="1.0.0.583" ?>
<?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.3"?>
<my:myFields
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"
xmlns:ma="http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes"
xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields"
xmlns:q="http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields"
xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution"
xmlns:dms="http://schemas.microsoft.com/office/2009/documentManagement/types"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-11-20T17:06:24"
xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<my:Cover>
<my:winery>39B</my:winery>
<my:Facility>140x</my:Facility>
<my:FacilityTypeGroup>
<my:FacilityType></my:FacilityType>
<my:FacilityType>1</my:FacilityType>
<my:FacilityType>4</my:FacilityType>
<my:FacilityType>8</my:FacilityType>
<my:FacilityType>2</my:FacilityType>
<my:FacilityType>16</my:FacilityType>
</my:FacilityTypeGroup>
<my:OtherFacilityType>false</my:OtherFacilityType>
<my:OtherFacilityTypeComments></my:OtherFacilityTypeComments>
<my:CompletedByRpt>
<my:CompletedByRpt_Title>The</my:CompletedByRpt_Title>
<my:CompletedByRpt_Name>Man</my:CompletedByRpt_Name>
</my:CompletedByRpt>
<my:CompletedByRpt>
<my:CompletedByRpt_Title>The Other</my:CompletedByRpt_Title>
<my:CompletedByRpt_Name>Man</my:CompletedByRpt_Name>
</my:CompletedByRpt>
<my:FacilityOperator_Type>Private</my:FacilityOperator_Type>
<my:NameOfPFSORpt>
<my:NameOfPFSORpt_Title>Sr.</my:NameOfPFSORpt_Title>
<my:NameOfPFSORpt_Name>Inigo Montoya</my:NameOfPFSORpt_Name>
<my:NameOfPFSORpt_Pos>My big title</my:NameOfPFSORpt_Pos>
<my:NameOfPFSORpt_Org>My cool workplace</my:NameOfPFSORpt_Org>
</my:NameOfPFSORpt>
<my:FacilityOwner_Type>Private</my:FacilityOwner_Type>
</my:Cover>
<my:FVF>
<my:FVF_Compliance>2</my:FVF_Compliance>
</my:FVF>
<my:PVFU>
<my:PVFU_Applicable>true</my:PVFU_Applicable>
<my:PVFU_Suggestions></my:PVFU_Suggestions>
</my:PVFU>
<my:ICIO>
<my:ICIO_Application>ipsum</my:ICIO_Application>
<my:ICIO_ApprovedPFSP>2</my:ICIO_ApprovedPFSP>
</my:ICIO>
<my:Q1>
<my:Q1_Ans>
<my:Q1_Ans_A>0</my:Q1_Ans_A>
<my:Q1_Ans_B>0</my:Q1_Ans_B>
<my:Q1_Ans_C>0</my:Q1_Ans_C>
<my:Q1_Ans_D>0</my:Q1_Ans_D>
<my:Q1_Ans_E>0</my:Q1_Ans_E>
<my:Q1_Ans_F>1</my:Q1_Ans_F>
</my:Q1_Ans>
<my:Q1_Ans_Val>0</my:Q1_Ans_Val>
<my:Q1_Confidence>1</my:Q1_Confidence>
<my:Q1_Comment>Some comments</my:Q1_Comment>
</my:Q1>
</my:myFields>
在此先感谢您的耐心等待和帮助。
您的问题是冒号 (:
) 在 jQuery 选择器中是一个特殊字符。它用于表示以下字符序列是伪选择器,例如。 :first
或 :eq()
.
要防止这种行为,您需要通过在 :
前面添加 \
来转义 :
,如下所示:
Facility = $xml.find('my\:cover').find('my\:Facility').text();
$("#Facility").append('Facility =' + Facility );