Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-DOMParser.parseFromString()getElementById().innerHTML显示空白标记的值_Javascript_Html_Xml - Fatal编程技术网

Javascript-DOMParser.parseFromString()getElementById().innerHTML显示空白标记的值

Javascript-DOMParser.parseFromString()getElementById().innerHTML显示空白标记的值,javascript,html,xml,Javascript,Html,Xml,下面是responseText,其xml内容存储在ID“XMLResponseText”中。当我使用DOMParser.parseFromString解析此内容并尝试获取innerHTML时,空白标记不会正确显示 示例-标记“County”没有值。它显示为自动关闭标记。见下文 <html> <head> </head> <body text="#000000"> <ProcessTable id="XMLResp

下面是responseText,其xml内容存储在ID“XMLResponseText”中。当我使用
DOMParser.parseFromString
解析此内容并尝试获取
innerHTML
时,空白标记不会正确显示

示例-标记“County”没有值。它显示为自动关闭标记<代码>。见下文

<html>
<head>
</head>
<body text="#000000">
<ProcessTable id="XMLResponseText"><?xml version="1.0"?>
<nib:ProcessRequestResponse xmlns:nib="http://schemas.embarq.com/NIBSAdapter" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <ZipCode><ZipDetail><Branch>Las Vegas</Branch><Service>SWWVLVWWNV</Service><City>LAS VEGAS</City><State>NV</State><County/><Zip>89166</Zip><Territory>T-LVWWNV05</Territory><Warehouse>LVWWNVAA</Warehouse><RATType>DIALTONE</RATType></ZipDetail></ZipCode></nib:ProcessRequestResponse>
</ProcessTable>
</body>
</html>
警报(XMLResponseTextVal)
显示带有值的“County”

<!--?xml version="1.0"?-->
<nib:processrequestresponse xmlns:nib="http://schemas.embarq.com/NIBSAdapter" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <zipcode>
        <zipdetail>
            <branch>Las Vegas</branch>
            <service>SWWVLVWWNV</service>
            <city>LAS VEGAS</city>
            <state>NV</state>
            <county>
                <zip>89166</zip>
                <territory>T-LVWWNV05</territory>
                <warehouse>LVWWNVAA</warehouse>
                <rattype>DIALTONE</rattype>
            </county>
        </zipdetail>
    </zipcode>
</nib:processrequestresponse>

拉斯维加斯
SWWVLVWnV
拉斯维加斯
内华达州
89166
T-LVWWNV05
LVWWNVAA
拨号音

问题在于,HTML没有逃逸原始XML内容,因此HTML规则适用于它。当内容不被解析为HTML时,至少应转义

nib:ProcessRequestResponse xmlns:nib=”http://schemas.embarq.com/NIBSAdapter“xmlns:env=”http://schemas.xmlsoap.org/soap/envelope/">
ZipCode>ZipDetail>Branch>Las Vegas/Branch>Service>SWWVLVWNV/Service>City>Las Vegas/City>State>NV/State>County/>Zip>89166/Zip>Territory>T-LVWWNV05/Territory>Warehouse>LVWWNVAA/Warehouse>RATType>DIALTONE/RATType>/ZipDetail>/ZipCode>/nib:ProcessRequestResponse>
`;
var parser=新的DOMParser();
var xmlDoc=parser.parseFromString(responseText,“text/html”);
var XMLResponseText=xmlDoc.getElementById(“XMLResponseText”).textContent;

log(XMLResponseTextVal)这显然不是HTML,那么为什么要将其视为HTML?这是不公平的。我认为OP插入空格是为了显示大于号——没有意识到在代码中格式化可以解决这个问题。您可以扩展响应文本,包括
XMLResponseText
元素,而不仅仅是XML内容吗?这一点很重要,因为您描述的行为通常发生在XML未正确转义或未正确嵌入CDATA标记时。(当您更新时,请确保将内容格式化为代码——请参阅我的更新)即使在扩展响应文本之后,我也会得到相同的结果。我已经用responseText更新了描述,其中包括XMLResponseText元素。另外,如果您看到,XMLResponseTextVal以小写形式显示所有内容。@trincot,我只看到没有值的节点出现此问题。我有另一个响应文本,其中包含-702-455-0242V。。。当我执行Domparser.parsefromstring().getelementbyid().innerHTML时,其显示为-Phone702-455-0242/PhoneBusinessIndV/BusinessInd>您的意思是我必须首先对我的responseText执行escape,然后再执行parsefromstring吗?另外,请让我知道如何包装成CDATA构造函数否,我的意思是服务器返回的内容没有正确转义。这必须在服务器端修复。如何修复?或者,如果可以通过脚本实现,我可以尝试CDATA包装吗?如果您无法控制服务器,请与管理员联系。CDATA不是一个好主意,我把它从我的答案中删除了。是的,我今天试过了,效果很好。非常感谢:)
<!--?xml version="1.0"?-->
<nib:processrequestresponse xmlns:nib="http://schemas.embarq.com/NIBSAdapter" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <zipcode>
        <zipdetail>
            <branch>Las Vegas</branch>
            <service>SWWVLVWWNV</service>
            <city>LAS VEGAS</city>
            <state>NV</state>
            <county>
                <zip>89166</zip>
                <territory>T-LVWWNV05</territory>
                <warehouse>LVWWNVAA</warehouse>
                <rattype>DIALTONE</rattype>
            </county>
        </zipdetail>
    </zipcode>
</nib:processrequestresponse>