Копировать определенные узлы с Java - PullRequest
4 голосов
/ 12 мая 2011

Я пытаюсь прочитать / скопировать определенную часть XML-документа в JAVA и затем сохранить эту часть как новый XML-документ.Так что, как в примере ниже, вы видите информацию о студентах и ​​контактную информацию, я просто хочу выбрать информацию о студентах и ​​скопировать всю область, таким образом, узлы и элементы.Я могу только найти информацию о выборе только элемента или только узлов.

Так что помощь будет принята, спасибо.

<header>
<body>
    <studentinfo>
        <name>Student Name<name>
        <studentid>0987654321<studentid>
        <Location>USA<Location>
    <studentinfo>
    <contactinfo>
        <email>email@email.com<email>
        <address>somewhere 1<address>
        <postalcode>123456<postalcode>
    <contactinfo>
<body>
<header>

1 Ответ

10 голосов
/ 12 мая 2011

Я собираюсь сделать большое предположение, и это то, что вы используете org.w3c.dom.Document API.

Это двухэтапный процесс:

Document doc = parse(xmlSource);

Document targetDoc = openTargetDoc();
Node copyTo = findWhereYouWantToCopyStuffTo(targetDoc);

// Find the node or nodes to want to copy.. could use XPath or some other search
NodeList studentinfoList = doc.getElementsByTagName("studentinfo");

// for each found... make a copy (via importNode) and attach to some point in the target doc
for( int i = 0; i < studnetinfoList.getLength(); i ++ ){
    Node n = studentinfoList.item(i);
    Node copyOfn = targetDoc.importNode(n,true);
    copyTo.appendChild(copyOfn);
}

Если этоэто не то, что вы ищете, вам может понадобиться добавить немного больше информации о том, что вы хотите скопировать и куда, с помощью каких API и т. д.

...