XML - JavaScript - >如何将XML标记显示为HTML

时间:2013-04-04 06:24:21

标签: javascript xml xslt

我遇到的问题是,当XML节点没有值时,open和close标签位于不同的行上,如

<td ID="ref_4b73aa95ffd2289_phrPayer_1_DateEffective">
</td>
<td ID="ref_4b73aa95ffd2289_phrPayer_1_DateTerminated">
</td>

当节点有数据时,open和close标签位于一行:

<td ID="ref_4b73ba85ffd2289_phrPayer_1_Company">Medicare Parts A&amp;B</td>

我遇到的问题是,当我读取数据时,它是逐行读取的。 以下是使用的XML数据:

 <tr>
     <td ID="ref__phrPayer_1_Company">Medicare Parts A&amp;B</td>
     <td ID="ref__phrPayer_1_DateEffective">
     </td>
     <td ID="ref__phrPayer_1_DateTerminated">
     </td>
     <td ID="ref__phrPayer_1_PolicyNumber">
     </td>
     <td ID="ref__phrPayer_1_GroupNumber">
     </td>
     <td ID="ref__phrPayer_1_SubscriberName">AdamJulie</td>
 </tr>

* 以上编码由6列组成,尽管如上所示,有10行编码。这是主要问题。 *

当我尝试使用 跟随 将数据拆分为Array时:

var purposeArray = purposeOfVisit.innerHTML.split("\n");

我收到的数据是:

Medicate Parts A&amp;B,,,,,,,,,AdamJulie

应该是:

Medicare Parts A&amp;B,,,,,AdamJulie

数组的长度与在这种情况下为10的行数相同,其中应为5。

我想知道的是我如何阅读带有数据的td标签

我希望innerHTML以下面的代码作为示例阅读:

<td ID="ref__phrPayer_1_Company">Medicare Parts A&amp;B</td>
<td ID="ref__phrPayer_1_DateEffective">
</td>
<td ID="ref__phrPayer_1_DateTerminated">
</td>
<td ID="ref__phrPayer_1_PolicyNumber">
</td>
<td ID="ref__phrPayer_1_GroupNumber">
</td>
<td ID="ref__phrPayer_1_SubscriberName">AdamJulie</td>

而不是:

Medicare Parts A&amp;B
.
.
.
.
.
.
.
.
AdamJulie

.表示空值。

这是可能的吗?如果是这样我会怎么做?或者使用<td>&lt;<td>代码替换为</td></td>&lt;代码?

4 个答案:

答案 0 :(得分:1)

您可以通过如下所示的流读取xml字符串,而不是以这种方式使用XML解析器

var XMLString = "<tbody><tr><td ID=''>Medicare Parts A&amp;B</td><td ID=''></td><td ID=''></td><td ID=''></td><td ID=''></td><td ID=''>AdamJulie</td></tr><tr><td ID=''>Test2</td><td ID=''></td><td ID=''></td><td ID=''>123</td><td ID=''></td><td ID=''></td></tr></tbody>";

您可以split每列之后的字符串:

myXMLArray = XMLString .split("</td>");

使用正则表达式删除所有标记。

var regex = /(<([^>]+)>)/ig;

for( var x = 0; x < XMLString .length; x++)
{
result[x] = XMLString [x].replace(regex, "");
}

古德勒克...

答案 1 :(得分:1)

也许请检查Sarissa库。

答案 2 :(得分:0)

innerHTML方法返回HTML标记内的任何内容。如果你想用数据获取HTML标签,我建议你使用类似的东西:

document.getElementsByTagName('td')

答案 3 :(得分:0)

您正在尝试编写自己的XML解析器,而且您做错了。您不能简单地在行边界处拆分XML,然后分别解析每一行。

有很多优秀的XML解析器可供使用,最好使用其中一种。如果你必须自己解析XML,那么你需要学习解析器编写的艺术;这对业余爱好者来说不是一份工作。