- - PR -
XMLの追加について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-07-28 16:41
いつもお世話になっています。
すいません質問です。 以下のコードでXML文書に要素を追加しているのですが XmlNode rootXmlNode = xmlDocument.DocumentElement; XmlNamespaceManager xnm = new XmlNamespaceManager(xmlDocument.NameTable); xnm.AddNamespace("nm","x-schema:tsSchema.xml"); XmlNode xmlList = rootXmlNode.SelectSingleNode(".//nm:thesaurus",xnm); //XML文書に追加// //追加する要素作成 XmlElement replacement = xmlDocument.CreateElement("replacement"); XmlElement pat = xmlDocument.CreateElement("pat"); XmlElement sub = xmlDocument.CreateElement("sub"); XmlText pattext = xmlDocument.CreateTextNode("新しい項目"); XmlText subtext = xmlDocument.CreateTextNode("新しい項目"); //項目の追加 xmlList.AppendChild(replacement); replacement.AppendChild(pat); replacement.AppendChild(sub); pat.PrependChild(pattext); sub.AppendChild(subtext); 以下のように要素<replacement> 属性「xmlns=""」が追加されてしまいます。 いろいろ調べてみたのですが分かりません。 ご存知の方いらっしゃいましたらご教授下さい。 <XML ID="Microsoft Search Thesaurus"> <!-- Commented out--> <thesaurus xmlns="x-schema:tsSchema.xml"> <replacement xmlns=""> <sub>新しい項目</sub> </replacement> <replacement xmlns=""> <sub>新しい項目</sub> </replacement> <replacementxmlns=""> <sub>新しい項目</sub> </replacement> </thesaurus> </XML> [ メッセージ編集済み 編集者: Marcye 編集日時 2004-07-28 16:41 ] |
|
投稿日時: 2004-07-28 17:19
追加する要素にも名前空間を付けるとどうなりますか
|
|
投稿日時: 2004-07-28 17:41
MMXさんお返事ありがとうございます。
追加要素に名前空間つけてみたのですが・・・ 以下のようになってしました。 XmlElement replacement = xmlDocument.CreateElement("nm","replacement", "x-schema:tsSchema.xml"); <nm:replacement xmlns:nm="x-schema:tsSchema.xml"> <pat xmlns="">新しい項目</pat> <sub xmlns="">新しい項目</sub> </nm:replacement> [ メッセージ編集済み 編集者: Marcye 編集日時 2004-07-28 19:06 ] |
|
投稿日時: 2004-07-28 21:22
.NET Framework1.1 では出ない
MSDN Japan Home > MSDN Library Japan > .NET Framework > リファレンス > クラス ライブラリ > System.Xml > XmlDocument クラス > メソッド http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfsystemxmlxmldocumentclasscreateelementtopic.asp ーーーーーーーーーーーーーーーーーーーーーーーー using System; using System.IO; using System.Xml; public class Sample { public static void Main() { // Create the XmlDocument. XmlDocument doc = new XmlDocument(); string xmlData = "<book xmlns:bk='urn:samples'></book>"; doc.Load(new StringReader(xmlData)); // XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable); xnm.AddNamespace("nm","x-schema:tsSchema.xml"); // Create a new element and add it to the document. XmlElement elem = doc.CreateElement("bk", "genre", "urn:samples"); elem.InnerText = "fantasy"; doc.DocumentElement.AppendChild(elem); //追加する要素作成 XmlElement replacement = doc.CreateElement("replacement"); XmlElement pat = doc.CreateElement("pat"); XmlElement sub = doc.CreateElement("sub"); XmlText pattext = doc.CreateTextNode("新しい項目"); XmlText subtext = doc.CreateTextNode("新しい項目"); //項目の追加 doc.DocumentElement.AppendChild(replacement); replacement.AppendChild(pat); replacement.AppendChild(sub); pat.PrependChild(pattext); sub.AppendChild(subtext); Console.WriteLine("Display the modified XML..."); doc.Save(Console.Out); } } ー----------------- Display the modified XML... <?xml version="1.0" encoding="shift_jis"?> <book xmlns:bk="urn:samples"> <bk:genre>fantasy</bk:genre> <replacement> <pat>新しい項目</pat> <sub>新しい項目</sub> </replacement> </book> ーーーーーーーーーーーーーーーーー xmlns="" が付いても XML 的には等価じですが、だめなら 正規化とか簡約化を考える? |
|
投稿日時: 2004-07-29 13:14
MMXさんお返事ありがとうございます。
XMLの追加の件ですが、解決いたしました。 以下のように「"x-schema:tsSchema.xml"」を追加したところ 「xmlns=""」が消えました。 お世話になりました。 毎回本当にありがとうございます。 XmlNode rootXmlNode = xmlDocument.DocumentElement; XmlNamespaceManager xnm = new XmlNamespaceManager(xmlDocument.NameTable); xnm.AddNamespace("nm","x-schema:tsSchema.xml"); XmlNode xmlList = rootXmlNode.SelectSingleNode(".//nm:thesaurus",xnm); //XML文書に追加// //追加する要素作成 XmlElement replacement = xmlDocument.CreateElement("replacement", "x-schema:tsSchema.xml"); XmlElement pat = xmlDocument.CreateElement("pat","x-schema:tsSchema.xml"); XmlElement sub = xmlDocument.CreateElement("sub","x-schema:tsSchema.xml"); XmlText pattext = xmlDocument.CreateTextNode("新しい項目"); XmlText subtext = xmlDocument.CreateTextNode("新しい項目"); //項目の追加 xmlList.AppendChild(replacement); replacement.AppendChild(pat); replacement.AppendChild(sub); pat.PrependChild(pattext); sub.AppendChild(subtext); |
1