2

Xmlvb.net の既存のドキュメントに用意したテキストを追加しようとしていXmlDocumentます。クラスを使用しています。これが私のコードです(問題を説明するために簡略化されています):

Dim s As String = "<RelativeLayout android:layout_width=""fill_parent"" android:layout_height=""fill_parent"" android:layout_weight=""1.0"" />"
Dim tempdoc = New XmlDocument()
tempdoc.LoadXml("<doc />")
ns = New XmlNamespaceManager(tempdoc.NameTable)
ns.AddNamespace("android", "http://schemas.android.com/apk/res/android")
tempdoc.DocumentElement.SetAttribute("xmlns:android", "http://schemas.android.com/apk/res/android")
Dim frag = tempdoc.CreateDocumentFragment()
frag.InnerXml = s

最後の命令は、「android prefix is undeclared」という XmlException を生成します。私は、XmlNamespaceManager (行 4 ~ 5) または名前空間属性を直接書き込む (行 6) のいずれかがこれを処理するという印象を受けましたが、明らかにそうではありません。

私は何を間違っていますか?

メソッドを使用して要素を手動で記述できることはわかっていますcreateelementが、私が示した例は問題を説明するために単純化されています。実際には、文字列は多くの属性とサブノードを"s"含む大きな部分であり、コードですべてを手動で記述するのは面倒です。Xml私がやりたいのはXml、可能であれば、ドキュメント全体を追加することです。

4

2 に答える 2

0

System.Xml.Linq 名前空間にある XElement と XDocument を調べることをお勧めします。それはあなたが探しているものを正確に提供します 基本的なアイデアは、あなたが欲しいものはこのようなものです

XElement root = new XElement("RelativeLayout,
            new XAttribute("android:layout_width", ""),
            new XAttribute("fill_parent", "") //etc
            );
root.Add(XElement.Parse(s));

このコードをテストしていないことに注意してください。ただし、これに非常に近いコードを頻繁に使用しているため、構文は近いです。

于 2013-09-13T12:18:05.370 に答える