2
<Files>
    <File Name="D:/temp/OpId_63_7b126c8d-f90a-402b-9902-786c7995314f/35f9cdf8-f6cc-4c9d-b0e5-cc21c1842765" />
    <File Name="D:/temp/PPPPOpId_63_7b126c8d-f90a-402b-9902-786c7995314f/35f9cdf8-f6cc-4c9d-b0e5-cc21c1842765" />
</Files>

上記の XML から、次のような 2 つのファイル名が必要です。

D:/temp/OpId_63_7b126c8d-f90a-402b-9902-786c7995314f/35f9cdf8-f6cc-4c9d-b0e5-cc21c1842765
D:/temp/PPPPOpId_63_7b126c8d-f90a-402b-9902-786c7995314f/35f9cdf8-f6cc-4c9d-b0e5-cc21c1842765
4

4 に答える 4

5

javaxを使用すると、次のような xpath クエリを介してデータを抽出できます。

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(stream);

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();

String name1 = (String)xpath.evaluate("/Files/File[1]/@Name", doc, XPathConstants.STRING);
String name2 = (String)xpath.evaluate("/Files/File[2]/@Name", doc, XPathConstants.STRING);

これは、XML がストリーム変数の入力ストリームからロードされていることを前提としています。すでに XML を文字列として持っている場合は、次のようにストリームに変換できます。

InputStream stream = new ByteArrayInputStream(xmlstring.getBytes("UTF-8"));

次のようにして、URL から XML ディレクトリをロードすることもできます。

Document doc = docBuilder.parse(url);

少なくとも次のインポートが必要になることに注意してください。

import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
于 2013-07-01T13:40:21.410 に答える
3

DOM XML パーサーの使用

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;

それから、

File filesXML = new File("/files.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(filesXML);


NodeList nList = doc.getElementsByTagName("File");

for (int i= 0; i< nList.getLength(); i++) {

    Node nNode = nList.item(i);

    if (nNode.getNodeType() == Node.ELEMENT_NODE) {



        Element eElement = (Element) nNode;

            System.out.println("File: " + eElement.getAttribute("Name"));
        }
}

参照

于 2013-07-01T13:25:00.947 に答える