#java #xml #copy #rft
#java #xml #Копировать #rft
Вопрос:
Я пытаюсь прочитать / скопировать определенную часть xml-документа на JAVA, а затем сохранить эту часть как новый XML-документ. Итак, как в примере ниже, вы видите studentinfo и контактную информацию, я просто хочу выбрать studentinfo и скопировать всю область, таким образом, узлы и элементы. Я могу найти информацию только о выборе только элемента или только узлов.
Поэтому помощь была бы оценена, спасибо.
<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. Что вы используете для обработки XML (анализаторы, фреймворки и т.д.)?
2. Вы можете либо проанализировать xml, либо использовать xptath, чтобы получить интересующий вас раздел.
Ответ №1:
Я собираюсь сделать большое предположение, и это то, что вы используете 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 и т.д.
Комментарии:
1. что именно представляет собой метод «findwhereouwanttocopystuffto»?
2. если вы не будете немного более конкретны в отношении того, куда вы хотите скопировать, на какие узлы, не могу ответить на этот вопрос :).. Я предполагаю, что вы копируете узлы в другой документ.. поэтому функция findWhereYouWantToCopyStuffTo() должна найти местоположение в целевом документе и вернуть его. Примечание вышесказанное также можно использовать для копирования узлов в пределах одного документа.