XmlElementを既存のドキュメントに追加していますが、余分な属性が追加されています。ここでは、コードは次のようになります。.NET XMLはなぜドキュメントに追加するXmlElementsにxlmns属性を追加しますか?私はそれを停止することはできますか?
XmlNode manifest = this.getManifestNode();
XmlElement manifestEntry = _content.CreateElement ("item", _contentPath);
XmlAttribute id = _content.CreateAttribute ("id");
id.Value = "content" + getManifestNodes().Count;
XmlAttribute href = _content.CreateAttribute ("href");
href.Value = splitPath [splitPath.Length - 1];
XmlAttribute mediaType = _content.CreateAttribute ("media-type");
mediaType.Value = "application/xhtml+xml";
manifestEntry.Attributes.Append (id);
manifestEntry.Attributes.Append (href);
manifestEntry.Attributes.Append (mediaType);
manifest.AppendChild (manifestEntry);
と結果のXML:
<item id="content3" href="test1.html" media-type="application/xhtml+xml" xmlns="/home/jdphenix/epubtest/test/OEBPS/content.opf" />
はどこから来る
xmlns="/home/jdphenix/epubtest/test/OEBPS/content.opf"
のですか?追加するパスは、ディスク上のドキュメントの場所ですが、私は自分のコード(atleast、私が認識している)に追加していません。詳細を知る必要がある場合はお知らせください。
編集:私はFilburtの提案ごとに私のコードを修正し、これは正しい方向への一歩ですが、次のXMLを生成
XmlElement manifestEntry = _content.CreateElement ("item");
に
XmlElement manifestEntry = _content.CreateElement ("item", _contentPath);
を変更:
<item id="content3" href="test1.html" media-type="application/xhtml+xml" xmlns="" />
空のxmlns属性の問題はおそらく、http://stackoverflow.com/questions/135000/how-to-prevent-blank-xmlns-attributes-in-output-from-nets-xmldocumentの複製と見なされます – jdphenix
これは、.NETのXmlクラスがxmlnsを適切に処理するために発生します。この「問題」は私がXML名前空間を理解していないことが原因です。 出力は空のxmlns属性エントリを生成していました。その理由は、それが への呼び出しによって行われたからです。XmlElement manifestEntry = _content.CreateElement( "item");代わりの のXmlElement manifestEntry = _content.CreateElement( "アイテム"、 "http://www.idpf.org/2007/opf")。 正解になるために、元の質問には詳細を記載しませんでした。 http://stackoverflow.com/questions/135000/how-to-prevent-blank-xmlns-attributes-in-output-from-nets-xmldocumentを参照してください。 – jdphenix