|
■No17890 (出水 さん) に返信 > <!ELEMENT Name (#PCDATA|Child)*> > 上と下の違いがわからなかった… > 下は行末に全角スペースが入っているんですね 私も分かりませんでしたw 出水さん、説明ありがとうございます。
魔界の仮面弁士さんのご指摘にありましたスペース部分ですが、注意して書き直してみましたが同じエラーが発生いたしました。
Wikiをイメージした辞書機能のあるWebアプリを作っているのですが、そのデータベースとしてXMLファイルを使用しています。 学校で実習として作成しているので、各XMLを教科毎に分けているのですが、全てのXMLファイルで同じDTDを使用しています。 下記のとおり、ルート要素だけを記述し、Title要素等は編集時に加わるようなプログラムになっています。が、 編集し、保存し、トップページに戻る際にエラーが発生しています。
<Main ファイル名="Java"> </Main>
↓
<Main ファイル名="Java"> <Title 行="アルファベット"> <SubTitle 行名="S"> <Name MainTitle="System.out.print"> 実行例:System.out.print("表示する文字列を入力"); //文字列を表示する </Name> </SubTitle> </Title> </Main>
加えるプログラム部分はだいぶ省略して書きますが、XMLファイルを開いてforeach (XmlNode child_node in terminal_node)で挿入する箇所を調べた後に挿入しています。
XmlElement xml = doc.CreateElement("Name"); //Name要素 XmlAttribute att = doc.CreateAttribute("MainTitle"); //属性名 att.Value = ItemTB.Text; //属性値 xml.Attributes.Append(att); //Name要素に属性追加 string[] separator = { "\\" }; string readID = Request.ServerVariables["LOGON_USER"].Split(separator, StringSplitOptions.RemoveEmptyEntries)[1]; //ユーザ名取得 XmlCharacterData text = doc.CreateTextNode("\r\n" + ValueTB.Text + "\r\n更新者ID:" + readID + "\r\n更新日時:" + DateTime.Now.ToString("yyyy年MM月dd日 (dddd) tt hh時mm分ss秒")); //#PCDATA作成 xml.AppendChild(text); //Name要素に#PCDATA追加 terminal_node.InsertBefore(xml, child_node); //Name要素をSubTitle要素の該当部分に追加
保存はされていますが、「必要な・・・」とエラーが発生して強制終了してしまいます。 当方でも試行錯誤いたしておりますが、XMLは知識が少ないので。。。
ご教授お願いいたします。
|