首页>Program>source

解决了显示XML信息的问题.我认为这与选择正确的节点(公司名称)有关.需要一个新的见解...有一种感觉,我可能正在忽略一些非常简单的事情.代码如下。

XML

<GovTalkMessage>
    <EnvelopeVersion>1.0</EnvelopeVersion>
    <Header>
        <MessageDetails>
            <Class>CompanyDetails</Class>
            <Qualifier>response</Qualifier>
            <TransactionID>9999999999999</TransactionID>
            <GatewayTest>TRUE</GatewayTest>
            <GatewayTimestamp>2013-09-24T17:51:41-00:00</GatewayTimestamp>
        </MessageDetails>
        <SenderDetails>
            <IDAuthentication>
                <SenderID>******</SenderID>
                <Authentication>
                    <Method>CHMD5</Method>
                    <Value></Value>
                </Authentication>
            </IDAuthentication>
            <EmailAddress>[email protected]</EmailAddress>
        </SenderDetails>
    </Header>
    <GovTalkDetails>
        <Keys/>
    </GovTalkDetails>
    <Body>
        <CompanyDetails>
            <CompanyName>MILLENNIUM STADIUM PLC</CompanyName>
            <CompanyNumber>03176906</CompanyNumber>
            <RegAddress>
                <AddressLine>MILLENNIUM STADIUM</AddressLine>
                <AddressLine>WESTGATE STREET</AddressLine>
                <AddressLine>CARDIFF</AddressLine>
                <AddressLine>CF10 1NS</AddressLine>
            </RegAddress>
        </CompanyDetails>
    </Body>
</GovTalkMessage>

ASP代码:

Set XMLDom = CreateObject("MSXML2.DomDocument.6.0")
XMLDom.Async = False
XMLDom.LoadXML (theXML)
theNode = "/GovTalkMessage/Body/CompanyDetails"
Set NodeList = XMLDom.SelectNodes(theNode)
nodeCount = XMLDom.SelectNodes(theNode).Length
If XMLDom.ParseError = 0 Then
    Response.Write(nodeCount)
    For Each Node in NodeList 
        response.Write(Node.Text & "<br>")
    Next
Else
    response.Write("Error Parsing Results")
End If
Set XMLDom = Nothing

结果: nodeCount = 0

最新回答
  • 2021-1-10
    1 #

    您的XML文件使用名称空间.节点

    <CompanyDetailsxmlns="http://xmlgw.companieshouse.gov.uk/v1-0/schema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlgw.companieshouse.gov.uk/v1-0/schema
         http://xmlgw.companieshouse.gov.uk/v1-0/schema/CompanyDetails-v2-1.xsd">
    

    定义默认名称空间 http://xmlgw.companieshouse.gov.uk/v1-0/schema .除非节点使用显式命名空间(例如 <xsi:Something> )使用默认名称空间,并且您还必须在代码中定义和使用该默认名称空间.这样的事情应该起作用:

    uri = "http://xmlgw.companieshouse.gov.uk/v1-0/schema"
    XMLDom.setProperty "SelectionNamespaces", "xmlns:ns='" & uri & "'"
    theNode = "//ns:CompanyDetails"
    Set NodeList = XMLDom.SelectNodes(theNode)
    nodeCount = NodeList.Length
    WScript.Echo nodeCount
    

  • 2021-1-10
    2 #

    如果要获取节点 CompanyName ,然后尝试以下方法:

    theNode = "/GovTalkMessage/Body/CompanyDetails/CompanyName"
    Response.Write (XMLDom.SelectSingleNode(theNode).xml)
    

  • rust:使用非复制类型初始化固定大小的大型数组
  • regex:在PHP中用于preg_replace的定界符(替换在PHP外部但不在内部工作)