在jQuery中使用find方法时获取多个标记值

时间:2014-10-16 12:26:45

标签: javascript jquery asp.net xml

我使用.find方法获取xml标记的值。在我的xml中,如果xmltag重复,它会给我所有标记的值。 实施例

<Response>
<Result>0</Result>
<Message>Tenant Information fetched for tenantID=1</Message>
<Data>
    <Tenants>
        <row>
            <TenantID>1</TenantID>
            <TenantTypeID>1</TenantTypeID>
            <CardCode>CLINSH0184</CardCode>
            <CustomerName>S. H. Pitkar Orthotools Pvt Ltd</CustomerName>
            <CustomerGroup>VAT Customer</CustomerGroup>
            <ServiceContract>69</ServiceContract>
            <SUserID>S0004493123</SUserID>
            <ContactPerson>Nupur Pitkar</ContactPerson>
            <Phone1>123</Phone1>
            <Phone2>456</Phone2>
            <Mobile>789</Mobile>
            <Email>abcd@inecom.com.sg</Email>
            <StartDate>2014-01-01T00:00:00</StartDate>
            <EndDate>2015-01-01T00:00:00</EndDate>
            <Active>1</Active>
            <B1Version>8.82</B1Version>
            <PatchLevel>12</PatchLevel>
            <SqlVersion>2008</SqlVersion>
            <ServiceURL>http://localhost:8932/CRMService.asmx</ServiceURL>
            <DataBaseName>WTS</DataBaseName>
            <ExpiredMessage>Subscription to this account is expired. Please contact System Administrator</ExpiredMessage>
            <ExpirationMessage>Subscription to this account will expire soon. Please contact System Administrator</ExpirationMessage>
            <WarningDays>3</WarningDays>
            <logo>CLINSH0184.jpg</logo>
            <LicenseDetails>
                <row>
                    <ItemCode>SaaS-CRM-Sales</ItemCode>
                    <ItemName>SaaS - CRM Module-Sales</ItemName>
                    <StartDate>2014-07-15T00:00:00</StartDate>
                    <EndDate>2014-08-15T00:00:00</EndDate>
                    <License>1</License>
                </row>
                <row>
                    <ItemCode>SaaS-CRM-Purchase</ItemCode>
                    <ItemName>SaaS - CRM Module-Purchase</ItemName>
                    <StartDate>2014-07-15T00:00:00</StartDate>
                    <EndDate>2014-08-15T00:00:00</EndDate>
                    <License>2</License>
                </row>
                <row>
                    <ItemCode>SaaS-CRM-Service</ItemCode>
                    <ItemName>SaaS - CRM Module-Service</ItemName>
                    <StartDate>2014-07-15T00:00:00</StartDate>
                    <EndDate>2014-08-15T00:00:00</EndDate>
                    <License>3</License>
                </row>
            </LicenseDetails>
        </row>
    </Tenants>
</Data>

在提到xml中,我使用下面的代码来获取xml标记的值。

var bindName='Response Data Tenants row StartDate';
$xmlNode = $xml.find(bindName);
if ($xmlNode != null) {
  var value = $xmlNode.text();
  //do some thing with code.
  //here I am geting all value of xml tag start with 'StartDate'
  //I am expecting value of only single node specified in bindName variable.
}

在这种情况下,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您需要指定所需的行,现在它与每行中的startdate匹配。

更改

var bindName='Response Data Tenants row StartDate';

var bindName='Response Data Tenants row row:first StartDate';

匹配第一行。

<强>更新 抱歉,更新了,因为我也找到了上层行元素。

答案 1 :(得分:1)

如果您只在StartDate节点中查找row,则应使用直接子选择器而不是后代选择器。您的最终查询选择器应为:

var bindName='Response Data Tenants > row > StartDate';

这将从StartDate部分排除LicenseDetails

请注意,如果您在单个Tenants中有多个row或多个Tenant部分,您仍可能获得多个结果,并应使用{{1}进行迭代}:

.each()