簡體   English   中英

cdata注意到在asp.net xml中關閉

[英]cdata noting closing in asp.net xml

我正在使用asp.net加載XML文件的項目

在一個xml文件中,我有一個問題,我想顯示圖片並在不同的問題中閃爍。

<![CDATA[<a><img src="Study/1.png"/><a>]]>

那是我在我的xml中使用的代碼,我的問題是它可以很好地顯示Flash內容和圖像,但是沒有關閉cdata屬性,即

]]>直接在圖像或對象之后。

有任何想法嗎?

這是我的XML

<?xml version="1.0" encoding="UTF-8"?>
<quiz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:noNamespaceSchemaLocation="quiz.xsd">
<mchoice>
    <question>For aircraft flying over the high seas, which rules shall be in force?  <![CDATA[<a><img src="Study/1.png"/></a>]]></question>
    <answer>The rules established by the state(s) adjacent to the high seas over flown </answer>
    <answer>The rules established by the state of the operator of the aircraft </answer>
    <answer correct="yes">The rules established by the state of registry of the aircraft </answer>
    <answer>The rules established under the Convention of international civil aviation </answer>
</mchoice>
     </quiz>

這是我的圖式

   <?xml version="1.0" encoding="UTF-8"?>
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"    elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="quiz">
    <xs:complexType>
        <xs:choice>
            <xs:element name="mchoice" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="question" type="xs:string"/>
                        <xs:element name="answer" minOccurs="2" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:simpleContent>
                                        <xs:extension base="xs:string">
                                        <xs:attribute name="correct" use="optional">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:enumeration value="yes"/>
                                                    <xs:enumeration value="no"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                               </xs:attribute>
                                         </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:choice>
    </xs:complexType>
</xs:element>
 </xs:schema>

這是我的XML的asp.net代碼

   Public Shared Function GetQuizDataFromXML(ByVal XMLFileName As String) As ArrayList
    Dim strXmlFilePath As String = XMLFileName
    Dim xDoc As XmlDocument = New XmlDocument()
    xDoc.Load(strXmlFilePath)
    Dim Arl As New ArrayList
    If Not IsNothing(xDoc) AndAlso xDoc.SelectNodes("/quiz/mchoice").Count > 0 Then
        Dim TotalQuestions As Integer = 0
        TotalQuestions = xDoc.SelectNodes("/quiz/mchoice").Count
        For i As Integer = 1 To TotalQuestions
            Dim strXPath As String = ""
            strXPath = "/quiz/mchoice[" & i.ToString() & "]"
            Dim oQ As New Questions
            oQ.QuestionID = i + 1
            oQ.Question = xDoc.SelectSingleNode(strXPath & "/question").InnerXml
            Dim xNodeList As XmlNodeList
            xNodeList = xDoc.SelectNodes(strXPath & "/answer")
            For j As Integer = 0 To xNodeList.Count - 1
                Dim oA As New Answers
                oA.QuestionID = oQ.QuestionID
                oA.Answer = xNodeList.Item(j).InnerText
                oA.AnswerID = j + 1
                Dim xNodeAttr As Object
                'Extract correct answer
                xNodeAttr = xNodeList.Item(j).Attributes.ItemOf("correct")
                oA.IsAnswer = False
                If Not xNodeAttr Is Nothing Then
                    If xNodeAttr.Value = "yes" Then
                        oA.IsAnswer = True
                    End If
                End If
                oQ.Answers.Add(oA)
            Next
            Arl.Add(oQ)
        Next
    End If
    Return Arl
    End Function

也許嘗試將整個問題放在CDATA部分中,如下所示

<question>
    <![CDATA[For aircraft flying over the high seas, which rules shall be in force? <a><img src="Study/1.png"/></a>]]>
</question>

如果那不能解決您的問題,請解決問題。 從可行的方法開始,並增加復雜性直到出現問題。 例如,按此順序修改<question>標記(第一個應該起作用)。

  1. <question>This is a test question</question>
  2. <question><![CDATA[This is a test question inside a CDATA tag]]></question>
  3. <question><![CDATA[This is a test question inside a CDATA tag with a <a>link</a>]]></question>
  4. <question><![CDATA[This is a test question inside a CDATA tag with a <a>link</a> and an image <img src="Study/1.png" />]]></question>
  5. <question><![CDATA[This is a test question inside a CDATA tag with a linked image <a><img src="Study/1.png" /></a>]]></question>

可能是因為<a>標記未關閉? 應該是</a>

更新資料

嗯,按照W3C規范CDATA部分的標記似乎沒有什么錯。

但是,由於您使用的是ASP.net,因此,根據此MSDN文章 ,您可以嘗試將]]>替換為] ]> ,看看是否可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM