2012-06-05 60 views
0

我想使用JavaScript解析瀏覽器內置解析器的XML字符串。我的XML字符串看起來是這樣的:XML解析錯誤:使用瀏覽器內置的解析器解析XML字符串時格式不正確

<?xml version='1.0' encoding='UTF-8' ?> 
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
      xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
      xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd' 
      elementFormDefault='qualified' 
      version='1.0'> 
<xsd:element name='probeMetadata' type='OASIS.System.Processor.LinuxProcessorProbe' /> 
<xsd:complexType name='OASIS.System.Processor.LinuxProcessorProbe'> 
<xsd:complexContent> 
<xsd:extension base='OASIS.System.Processor.ProcessorProbe'> 
<xsd:sequence> 
    <xsd:element name='nice_time' type='xsd:unsignedLong' /> 
    <xsd:element name='iowait_time' type='xsd:unsignedLong' /> 
    <xsd:element name='irq_time' type='xsd:unsignedLong' /> 
    <xsd:element name='soft_irq_time' type='xsd:unsignedLong' /> 
</xsd:sequence> 
</xsd:extension> 
</xsd:complexContent> 
</xsd:complexType> 
<xsd:complexType name='OASIS.System.Processor.ProcessorProbe'> 
<xsd:sequence> 
    <xsd:element name='idle_time' type='xsd:unsignedLong' /> 
    <xsd:element name='system_time' type='xsd:unsignedLong' /> 
    <xsd:element name='user_time' type='xsd:unsignedLong' /> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:schema> 

我寫了一個簡單的JavaScript代碼只是爲了檢查解析器是否被正確解析我的XML並將其轉換成有效的XML DOM。 JavaScript代碼如下所示:

parser = new DOMParser(); 
xmlDoc = parser.parseFromString(text, "text/xml"); 

x = xmlDoc.documentElement.childNodes; 

document.getElementById("Text1").value = x[3].nodeName; 

此處的「文本」位於XML上方。這個代碼意味着什麼。起初我只想測試一些簡單的東西。我在w3school.com測試了XML的有效性,它沒有給我錯誤,所以我想在XML中沒有錯誤。

+0

您使用的瀏覽器是?你如何加載XML?什麼是你得到確切的錯誤信息? – 2012-06-05 02:28:34

+0

爲什麼不使用[W3C驗證服務](http://validator.w3.org/)?使用由編寫該標準的組織支持的服務是有意義的。 – RobG

+0

我使用的是Chrome 19. parseFromString會爲您加載XML。我收到以下消息:「XML分析錯誤:格式不正確的位置:http:// localhost:49669/XSD_Parsing.aspx行號1,列96:」 –

回答

1

以下適用於我。我正在使用Chrome 20.0.1132.21 beta-m。

<html> 
<head> 
    <script> 
     function test(){ 
      var text = "<?xml version='1.0' encoding='UTF-8' ?>\r\n" 
      + "<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'\r\n" 
      + "   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\r\n" 
      + "   xsi:schemaLocation='http://www.w3.org/2001/XMLSchema XMLSchema.xsd'\r\n" 
      + "   elementFormDefault='qualified'\r\n" 
      + "   version='1.0'>\r\n" 
      + "<xsd:element name='probeMetadata' type='OASIS.System.Processor.LinuxProcessorProbe' />\r\n" 
      + "<xsd:complexType name='OASIS.System.Processor.LinuxProcessorProbe'>\r\n" 
      + "<xsd:complexContent>\r\n" 
      + "<xsd:extension base='OASIS.System.Processor.ProcessorProbe'>\r\n" 
      + "<xsd:sequence>\r\n" 
      + " <xsd:element name='nice_time' type='xsd:unsignedLong' />\r\n" 
      + " <xsd:element name='iowait_time' type='xsd:unsignedLong' />\r\n" 
      + " <xsd:element name='irq_time' type='xsd:unsignedLong' />\r\n" 
      + " <xsd:element name='soft_irq_time' type='xsd:unsignedLong' />\r\n" 
      + "</xsd:sequence>\r\n" 
      + "</xsd:extension>\r\n" 
      + "</xsd:complexContent>\r\n" 
      + "</xsd:complexType>\r\n" 
      + "<xsd:complexType name='OASIS.System.Processor.ProcessorProbe'>\r\n" 
      + "<xsd:sequence>\r\n" 
      + " <xsd:element name='idle_time' type='xsd:unsignedLong' />\r\n" 
      + " <xsd:element name='system_time' type='xsd:unsignedLong' />\r\n" 
      + " <xsd:element name='user_time' type='xsd:unsignedLong' />\r\n" 
      + "</xsd:sequence>\r\n" + "</xsd:complexType>\r\n" 
      + "</xsd:schema>" 
      parser = new DOMParser(); 
      xmlDoc = parser.parseFromString(text, "text/xml"); 
      x = xmlDoc.documentElement.childNodes; 
      document.getElementById("Text1").value = x[3].nodeName;   

     } 
    </script> 
</head> 
<body> 
    <input type="button" value="click" onClick="test()"/> 
    <input type="text" name="Text1" id="Text1"/> 
</body> 
</html> 
+0

我沒有正確格式化XML。我忘了整件事情。你能告訴我爲什麼\ r \ n如此重要。謝謝。 –