0

JavaScript を使用して、ブラウザーの組み込みパーサーで 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>

パーサーが XML を適切に解析して有効な XML DOM に変換しているかどうかを確認するためだけに、単純な JavaScript コードを作成しました。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 にエラーはないと思います。

4

1 に答える 1

1

以下は私にとってはうまくいきます。Chrome 20.0.1132.21 ベータ版を使用しています。

<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>
于 2012-06-05T05:37:14.833 に答える