2010-07-17 3 views
2

Привет, У меня есть XML-файл, и я хотел бы перейти к данному узлу и захватить имя всех Атрибутов на этом узле.Получить имя всех атрибутов в XML-файле

Например: (XML файла)

<RootName> 
    <SubNode> 
    <Attribute1>Value 1</Attribute1> 
    <Attribute2>Value 2</Attribute2> 
</SubNode> 
</RootName> 

Вот мой код до сих пор: (Java Code)

File file = new File("data.xml"); 
try 
    {  
     /* Parse File */ 
     DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
     Document doc = builder.parse(file); 

     /* Find Starting Tag */ 
     NodeList nodes = doc.getElementsByTagName(StartTag); 
     for (int i = 0; i < nodes.getLength(); i++) 
     { 
      Element element = (Element) nodes.item(i); 
      System.out.println(element); 

     } 

Теперь я знаю, что вы можете найти определенный атрибут дано имя

String name = element.getAttribute("Attribute1");  

Но я бы хотел найти все эти имена динамически.

Заранее спасибо

-Скоттого

+1

Просто комментарий терминологии ... в том, что вы написали выше, теги, такие как '', на самом деле являются элементами XML с текстом внутри них, они не являются атрибутами. Атрибут будет выглядеть примерно так: '' –

+0

На всякий случай, если вы разрабатываете XML, здесь приведена статья о том, когда выбирать атрибуты и когда выбирать элементы: http://www.ibm. com/developerworks/xml/library/x-eleatt.html –

+0

Спасибо, я новичок в XML, и они оба полезны – Scott

ответ

4

Что вы ищете, это Элементы. Вот пример того, как получить элементы в XML:

import java.io.*; 
import javax.xml.parsers.*; 
import org.w3c.dom.*; 
import org.xml.sax.*; 

public class DOMElements{ 
    static public void main(String[] arg){ 
    try { 
     BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Enter XML File name: "); 
     String xmlFile = bf.readLine(); 
     File file = new File(xmlFile); 
     if(file.exists()){ 
     // Create a factory 
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     // Use the factory to create a builder 
     DocumentBuilder builder = factory.newDocumentBuilder(); 
     Document doc = builder.parse(xmlFile); 
     // Get a list of all elements in the document 
     NodeList list = doc.getElementsByTagName("*"); 
     System.out.println("XML Elements: "); 
     for (int i=0; i<list.getLength(); i++) { 
      // Get element 
      Element element = (Element)list.item(i); 
      System.out.println(element.getNodeName()); 
     } 
     } 
     else{ 
     System.out.print("File not found!"); 
     } 
    } 
    catch (Exception e) { 
     System.exit(1); 
    } 
    } 
} 

Также см мой комментарий ниже ваш вопрос о том, как правильно спроектировать XML и когда использовать элементы, а когда использовать атрибуты.

+0

Спасибо, это помогло решить мою проблему. – Scott

3

element.getAttributes(); получает вас org.w3c.dom.NamedNodeMap. Вы можете пройти через это, используя метод item(int index), чтобы получить узлы org.w3c.dom.Attr, и получить их имена из метода getName().

Смежные вопросы