powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите распарсить файл XML
10 сообщений из 10, страница 1 из 1
Помогите распарсить файл XML
    #39178160
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуста распарсить файл XML
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<ФайлПФР>
    <ИмяФайла>PFR-700-Y-2015-M-01-D-16-ORG-071-000-000001-DCK-0001-UK-А014-IP-0000.XML</ИмяФайла>
    <ЗаголовокФайла>
        <ВерсияФормата>PFR-700</ВерсияФормата>
        <ТипФайла>ВНУТРЕННИЙ</ТипФайла>
        <ПрограммаПодготовкиДанных>
            <НазваниеПрограммы>ЕДИНОВРЕМЕННАЯ</НазваниеПрограммы>
            <Версия>PFR-700</Версия>
        </ПрограммаПодготовкиДанных>
        <ИсточникДанных>ПФР</ИсточникДанных>
    </ЗаголовокФайла>
    <ПачкаИсходящихДокументов>
        <СПИСОК_ПОЛУЧАТЕЛЕЙ_ЕВ_ЗА_СЧЕТ_СПН>
            <НаименованиеУК>АЛЬФА-КАПИТАЛ УК</НаименованиеУК>
            <КодУК>А014</КодУК>
            <ИНН>99999999</ИНН>
            <КодИП></КодИП>
            <ВариантРешения>УСТН</ВариантРешения>
            <ДатаФормирования>16.01.2015</ДатаФормирования>
            <Регион>
                <КодРегиона>000</КодРегиона>
                <НаименованиеРегиона>ОПФР</НаименованиеРегиона>
                <КоличествоРайонов>1</КоличествоРайонов>
                <Район>
                    <КодРайона>000</КодРайона>
                    <НаименованиеРайона>ПУ</НаименованиеРайона>
                    <Получатель>
                        <СтраховойНомер>012-345-678 00</СтраховойНомер>
                        <ФИО>
                            <Фамилия>ИВАНОВ</Фамилия>
                            <Имя>ИВАН</Имя>
                            <Отчество>ИВАНЫЧ</Отчество>
                        </ФИО>
                        <Пол>М</Пол>
                        <ДатаРождения>01.10.1959</ДатаРождения>
                        <СуммаЕВ>100.00</СуммаЕВ>
                        <ДатаРешения>08.12.2014</ДатаРешения>
                        <НомерРешения>1</НомерРешения>
                    </Получатель>
                    <СуммаРайон>100.00</СуммаРайон>
                    <КоличествоПолучателейРайон>1</КоличествоПолучателейРайон>
                </Район>
            </Регион>
            <СуммаВсего>100.00</СуммаВсего>
            <КоличествоПолучателейВсего>1</КоличествоПолучателейВсего>
        </СПИСОК_ПОЛУЧАТЕЛЕЙ_ЕВ_ЗА_СЧЕТ_СПН>
    </ПачкаИсходящихДокументов>
</ФайлПФР> 




Нужны данные < СтраховойНомер > < Фамилия > < Имя > < Отчество > < Пол > < ДатаРождения > < СуммаЕВ >

Пробовал 2 варианта

1 вариант
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    InputStream stream = new FileInputStream(new File(fname));
    InputStreamReader sreader = new InputStreamReader(stream, "Windows-1251");       
    File is =new File(fname);    
    SAXReader reader = new SAXReader();
         Document document = reader.read(sreader);

         System.out.println("Root element :" + document.getRootElement().getName());

         Element classElement = document.getRootElement();

         List<Node> nodes = document.selectNodes("???????"); <----  что ставить тут непонятно
         System.out.println("----------------------------");
         for (Node node : nodes) {
            System.out.println("\nCurrent Element :" + node.getName());
            System.out.println("Student roll no : " + node.valueOf("@rollno") );
            System.out.println("Last Name : " + node.selectSingleNode("Фамилия ").getText());
         }


2 вариант
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
	  SAXBuilder builder = new SAXBuilder();
	  File xmlFile = new File(fname);

	  try {

		Document document = (Document) builder.build(xmlFile);
		Element rootNode = document.getRootElement();
                List list = rootNode.getChildren("Район");
		for (int i = 0; i < list.size(); i++) {

		   Element node = (Element) list.get(i);

		   System.out.println("First Name : " + node.getChildText("Фамилия"));
		   System.out.println("Last Name : " + node.getChildText("Имя"));
		   System.out.println("Nick Name : " + node.getChildText("СтраховойНомер"));
		   System.out.println("Salary : " + node.getChildText("СуммаЕВ"));

		}

	  } catch (IOException io) {
		System.out.println(io.getMessage());
	  } catch (JDOMException jdomex) {
		System.out.println(jdomex.getMessage());
	  }



Файл XML прилагаю.
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178243
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumakov_JA,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class XPathExample {

    public static void main(String[] args) throws Exception {
        String fileName = "D:\\PFR-700-Y-2015-M-01-D-16-ORG-071-000-000001-DCK-0001-UK-А014-IP-0000.xml";
        DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        String path = "/ФайлПФР/ПачкаИсходящихДокументов/СПИСОК_ПОЛУЧАТЕЛЕЙ_ЕВ_ЗА_СЧЕТ_СПН/Регион/Район/Получатель/ФИО/*";
        try (java.io.InputStream file = new java.io.FileInputStream(fileName)) {
            Document document = (Document) db.parse(file);
            XPathFactory xPathfactory = XPathFactory.newInstance();
            XPath xpath = xPathfactory.newXPath();
            XPathExpression expr = xpath.compile(path);
            NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                System.out.printf("[%s] = '%s'%n", node.getNodeName(), node.getTextContent());
            }
        }
    }
}

Дополнительная инфа: https://habrahabr.ru/post/107004/
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178244
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178802
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanChumakov_JA,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class XPathExample {

    public static void main(String[] args) throws Exception {
        String fileName = "D:\\PFR-700-Y-2015-M-01-D-16-ORG-071-000-000001-DCK-0001-UK-А014-IP-0000.xml";
        DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        String path = "/ФайлПФР/ПачкаИсходящихДокументов/СПИСОК_ПОЛУЧАТЕЛЕЙ_ЕВ_ЗА_СЧЕТ_СПН/Регион/Район/Получатель/ФИО/*";
        try (java.io.InputStream file = new java.io.FileInputStream(fileName)) {
            Document document = (Document) db.parse(file);
            XPathFactory xPathfactory = XPathFactory.newInstance();
            XPath xpath = xPathfactory.newXPath();
            XPathExpression expr = xpath.compile(path);
            NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                System.out.printf("[%s] = '%s'%n", node.getNodeName(), node.getTextContent());
            }
        }
    }
}

Дополнительная инфа: https://habrahabr.ru/post/107004/

Спасибо огромное, но помогите ещё.
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178811
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class XPathExample {

    public static void main(String[] args) throws Exception {
        String fileName = "D:\\PFR-700-Y-2015-M-01-D-16-ORG-071-000-000001-DCK-0001-UK-А014-IP-0000.xml";
        DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        String path = "/ФайлПФР/ПачкаИсходящихДокументов/СПИСОК_ПОЛУЧАТЕЛЕЙ_ЕВ_ЗА_СЧЕТ_СПН/Регион/Район/Получатель/*";
        try (java.io.InputStream file = new java.io.FileInputStream(fileName)) {
            Document document = (Document) db.parse(file);
            XPathFactory xPathfactory = XPathFactory.newInstance();
            XPath xpath = xPathfactory.newXPath();
            XPathExpression expr = xpath.compile(path);
            NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                System.out.printf("[%s] = '%s'%n", node.getNodeName(), node.getTextContent());
            }
        }
    }
}



заменил на Получатель/*
получаю
[СтраховойНомер] = '012-345-678 00'
[ФИО] = '
ИВАНОВ
ИВАН
ИВАНЫЧ
'
[Пол] = 'Ж'
[ДатаРождения] = '01.10.1959'
[СуммаЕВ] = '100.00'


а как получить

[СтраховойНомер] = '012-345-678 00'
[Фамилия] = 'ИВАНОВ'
[Имя] = 'ИВАН'
[Отчество] = 'ИВАНЫЧ'
[Пол] = 'М'
[ДатаРождения] = '01.10.1959'
[СуммаЕВ] = '100.00'
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178850
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumakov_JAа как получитьНеобходимо перечислить пути и по каждому отдельно пробежаться:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
String root = "/ФайлПФР/ПачкаИсходящихДокументов/СПИСОК_ПОЛУЧАТЕЛЕЙ_ЕВ_ЗА_СЧЕТ_СПН/Регион/Район/Получатель/";
String[] paths = new String[] { "СтраховойНомер", "ФИО/*", "Пол", "ДатаРождения", "СуммаЕВ", "ДатаРешения", "НомерРешения" };
...
for (String path: paths) {
    XPathExpression expr = xpath.compile(root + path);
    NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
    for (int i = 0; i < nodes.getLength(); i++) {
        Node node = nodes.item(i);
        System.out.printf("[%s] = '%s'%n", node.getNodeName(), node.getTextContent());
    }
}
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178885
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо все получилось, простите за назойливость а есть варианты
прямого обращения к узлам ?
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178916
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumakov_JAа есть варианты прямого обращения к узлам ?Сам узел мы получаем здесь:
Код: java
1.
Node node = nodes.item(i);

Не совсем понял вопрос. Вас не устраивает XPath ?
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178934
Chumakov_JA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вас не устраивает XPath ?
не то чтобы не устраивает
но хотелось бы другие реализации.
...
Рейтинг: 0 / 0
Помогите распарсить файл XML
    #39178956
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chumakov_JAно хотелось бы другие реализации Parsing XML using DOM, SAX and StAX Parser in Java
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите распарсить файл XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]