3

XmlObject をクエリして、特定の名前空間を含む要素を返すこの方法を見つけました。

   XmlObject xobj = XmlObject.Factory.parse(
            "<a xmlns='testA'>\n" +
            "  <B:b xmlns:B='testB'>\n" +
            "    <B:x>12345</B:x>\n" +
            "  </B:b>\n" +
            "</a>");

    // Use xpath with namespace delcaration to find <B:b> element.
    XmlObject bobj = xobj.selectPath(
            "declare namespace B='testB'" +
            ".//B:b")[0];

これは非常に簡単で、他の名前付き名前空間にも使用できますが、デフォルトの名前空間に同じことを行うにはどうすればよいでしょうか? つまりxmlns=、このように:

   XmlObject xobj = XmlObject.Factory.parse(
            "<a xmlns='testA'>\n" +
            "  <b xmlns='testB'>\n" +
            "    <x>12345</B:x>\n" +
            "  </b>\n" +
            "</a>");

xmlbeansのドキュメントは、名前付きの名前空間のみを参照しています...探しているものを達成する方法はありますか?

4

2 に答える 2

1

xml の名前空間プレフィックスは、基本的に名前空間 uri のエイリアスです。つまり、名前空間のプレフィックスは重要ではなく、名前空間の URI だけが重要です。名前空間プレフィックスは、xml ドキュメントには表示されませんが、xpath で宣言できます。たとえば、xpath で「B」プレフィックスを使用して、デフォルトの名前空間を参照できます。

    // document using default namespace
    XmlObject xobj = XmlObject.Factory.parse(
            "<a xmlns='testA'>\n" +
            "  <b xmlns=''>\n" +
            "    <x>12345</x>\n" +
            "  </b>\n" +
            "</a>");

    // Use xpath with default namespace declaration to find <b> element.
    XmlObject bobj = xobj.selectPath(
            "declare namespace B=''; " +
            ".//B:b")[0];
于 2013-12-01T18:19:08.650 に答える