cuốn sách gpt4 ai đã làm

Ví dụ về cách sử dụng và mã của lớp uk.co.real_logic.sbe.xml.XmlSchemaParser

In lại Tác giả: Người biết Thời gian cập nhật: 24-03-2024 04:47:05 36 4
mua khóa gpt4 Nike

Bài viết này tổ chức Javauk.co.real_logic.sbe.xml.XmlSchemaParserMột số ví dụ mã cho lớp, hiển thịTrình phân tích cú pháp lược đồ XmlCách sử dụng cụ thể của lớp. Các ví dụ mã này chủ yếu đến từGithub/tràn ngăn xếp/MavenCác nền tảng như thế này là các mã được trích xuất từ ​​một số dự án được chọn. Chúng có ý nghĩa tham khảo mạnh mẽ và có thể giúp bạn ở một mức độ nhất định.Trình phân tích cú pháp lược đồ XmlThông tin cụ thể của lớp như sau:
Đường dẫn gói: uk.co.real_logic.sbe.xml.XmlSchemaParser
Tên lớp: XmlSchemaParser

Giới thiệu về XmlSchemaParser

[Tiếng Anh]Đóng gói phân tích cú pháp Lược đồ XML cho SBE để các cách biểu diễn khác có thể được sử dụng để tạo ra các cách biểu diễn độc lập.
[trung bình] Đóng gói phân tích cú pháp lược đồ XML của SBE để có thể sử dụng các cách biểu diễn khác nhằm tạo ra các cách biểu diễn độc lập.

ví dụ về mã

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

riêng tư tĩnh void mã hóaSchema(ByteBuffer byteBuffer cuối cùng) ném Ngoại lệ { Đường dẫn cuối cùng = Paths.get("example-schema.xml"); thử (InputStream in = new BufferedInputStream(Files.newInputStream(path))) { lược đồ MessageSchema cuối cùng = XmlSchemaParser.parse(in, ParserOptions.DEFAULT); cuối cùng Ir = new IrGenerator().generate(schema); thử (IrEncode irEncode = IrEncode mới(byteBuffer, ir)) { irEncode.encode();

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

/** * Xây dựng một Giá trị hợp lệ dựa trên nút XML và nút mã hóa Loại mã hóa có chứa giá trị hợp lệ * @param mã hóa cho enum */ public ValidValue(nút nút cuối cùng, kiểu mã hóa PrimitiveType cuối cùng) { name = getAttributionValue(node) , "tên"); mô tả = getAttributionValueOrNull(nút, giá trị "mô tả"); PrimitiveValue.parse(node.getFirstChild().getNodeValue(), EncodingType); kể từVersion = Integer.parseInt(getAttributionValue(node, "sinceVersion", "0")); không dùng nữa = Integer.parseInt(getAttributionValue(node, "không dùng nữa" , "0")); checkForValidName(nút, tên);

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

document.setUserData(ERROR_HANDLER_KEY, errorHandler, null); Bản đồ cuối cùng typeByNameMap = findTypes(document, xPath); errorHandler.checkIfShouldExit(); Bản đồ cuối cùng messageByIdMap = findMessages(document, xPath, typeByNameMap) ; errorHandler.checkIfShouldExit();

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

public MessageSchema( nút cuối cùng lược đồNode, bản đồ cuối cùng typeByNameMap, bản đồ cuối cùng messageByIdMap) { this.packageName = getAttributionValue(schemaNode, "package"); ); cái này.id = Integer.parseInt(getAttributionValue(schemaNode, "id")); this.version = Integer.parseInt(getAttributionValue(schemaNode, "version", "0")); this.semanticVersion = getAttributionValueOrNull(schemaNode, "semanticVersion"); .byteOrder = getByteOrder(getAttributionValue(schemaNode, "byteOrder", "littleEndian")); this.typeByNameMap = typeByNameMap; this.messageByIdMap = messageByIdMap; Chuỗi cuối cùng headerType = getAttributionValueOrNull(schemaNode, "headerType"); hiện tại(typeByNameMap, this.headerType, "Tiêu đề thư"); ((CompositeType)typeByNameMap.get(this.headerType)).checkForWellFormedMessageHeader(schemaNode);

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

/** * Xây dựng một Loại mới từ Lược đồ XML Được gọi bởi các lớp con để đặt hầu hết các trường chung * * @param nút từ Phân tích cú pháp Lược đồ XML * @param GivenName của nút này, nếu null thì tên được phân bổ sẽ được sử dụng. param referencedName của loại khi được tạo từ một ref trong một tổ hợp */ public Type(nút Node cuối cùng, Chuỗi cuối cùng được đưa ra, Chuỗi cuối cùng được tham chiếu) { if (null == GivenName) { name = getAttributionValue(node, "name"); } else { name = GivenName; } this.referencedName = referencedName; sự hiện diện = Presence.get(getAttributionValue(node, "hiện diện", "bắt buộc") mô tả = getAttributionValueOrNull(node, " description"); kể từ đóVersion = Integer.parseInt(getAttributionValue(node, "sinceVersion", "0")); không dùng nữa = Integer.parseInt(getAttributionValue(node, "không dùng nữa", "0")); ngữ nghĩaType = getAttributionValueOrNull(node, "semanticType"); , "-1")); }

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

riêng tư Trường phân tích cú phápGroupField(cuối cùng NodeList nodeList, int cuối cùng nodeIndex) ném XPathExpressionException chuỗi cuối cùng DimensionTypeName = getAttributionValue(node, "dimensionType", "groupSizeEncoding"); nút, "không thể tìm thấy DimensionType: " + DimensionTypeName); handError(node, "dimensionType phải là loại tổng hợp: " + DimensionTypeName); DimensionType = null; .name(getAttributionValue(node, "name")) .description(getAttributionValueOrNull(node, "description")) .id(Integer. ParseInt(getAttributionValue(nút, "id"))) .blockLength(Integer.parseInt(getAttributionValue(node, "blockLength", "0"))) .sinceVersion(Integer.parseInt(getAttributionValue(node, "sinceVersion", "0"))) .deprecated(Integer.parseInt(getAttributionValue (nút, "không dùng nữa", "0"))) .dimensionType((CompositeType)dimensionType) .build(); XmlSchemaParser.checkForValidName(node, field.name());

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

!semanticType.equals(type.semanticType())) handError(node, "SemanticType không khớp trên loại và trường: " + name); checkForValidName(node, name); handError(node, "valueRef not set for constant enum"); handError(node, "valueRef không khớp với loại trường: " + valueRef); handError(node, "valueRef không khớp với loại trường: " + valueRef); handError(node, "valueRef cho tên enum không tìm thấy: " + valueRefType);

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

nguyên thủyType = PrimitiveType.get(getAttributionValue(node, "primitiveType")); Chuỗi cuối cùng lengthAttr = getAttributionValueOrNull(node, "length"); length = Integer.parseInt(null == lengthAttr ? "1" : lengthAttr); .parseBoolean(getAttributionValue(nút, "độ dài biến", "false")); valueRef = getAttributionValueOrNull(node, "valueRef"); handError(node, "định dạng valueRef không hợp lệ (enum-name.valid-value-name): " + valueRef(node, "phải có không đổi khi valueRef được đặt: " + valueRef); characterEncoding = getAttributionValue(node, "characterEncoding", "US-ASCII").trim().toUpperCase(); Chuỗi cuối cùng characterEncoding = getAttributionValueOrNull(node, "characterEncoding"); this.characterEncoding = characterEncoding == null : characterEncoding.trim().toUpperCase(); (nút, "loại đã khai báo sự hiện diện là \"không đổi\" nhưng nút XML không có dữ liệu"); constValue = null; minValStr = getAttributionValueOrNull(node, "minValue"); minValue = minValStr != null ? PrimitiveValue.parse(minValStr,primitiveType): null; Chuỗi cuối cùng maxValStr = getAttributionValueOrNull(node, "maxValue"); .parse(maxValStr, kiểu nguyên thủy): null; nullValStr = getAttributionValueOrNull(node, "nullValue"); if (nullValStr != null) handWarning(node, "nullValue set, nhưng sự hiện diện không phải là tùy chọn");

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

riêng tư Trường phân tích cú pháp (cuối cùng NodeList nodeList, cuối cùng int nodeIndex) { nút cuối cùng = nodeList.item(nodeIndex); Chuỗi cuối cùng typeName = getAttributionValue(node, "type"); fieldType == null) { handError(node, "không thể tìm thấy loại: " + typeName); } Trường trường cuối cùng = Field.Builder() mới .name(getAttributionValue(node, "name")) .description(getAttributionValueOrNull(node, "description")) .id(Integer.parseInt(getAttributionValue(node, "id"))) .offset(Integer.parseInt(getAttributionValue( nút, "bù", "0"))) .semanticType(getAttributionValueOrNull(node, "semanticType")) .presence(getPresence(node, fieldType)) .valueRef(getAttributionValueOrNull(node, "valueRef")) .sinceVersion(Integer.parseInt(getAttributionValue(node, "sinceVersion", " 0"))) .deprecated(Integer.parseInt(getAttributionValue(node, "không dùng nữa", "0"))) .epoch(getAttributionValueOrNull(node, "epoch")) .timeUnit(getAttributionValueOrNull(node, "timeUnit")) .type(fieldType) .build(); field.validate(node, typeByNameMap); cánh đồng; }

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

XmlSchemaParser.handleError(node, "composite để mã hóa dữ liệu có độ dài thay đổi phải có \"length\""); if (!isUnsigned(primitiveType)) XmlSchemaParser.handleError(node, "\"length\" phải là loại không dấu"); XmlSchemaParser.handleWarning(node, "\"length\" phải là UINT8, UINT16 hoặc UINT32"); ("tùy chọn".equals(getAttributionValueOrNull(node, "presence"))) XmlSchemaParser.handleError( nút, "tổng hợp để mã hóa dữ liệu có độ dài thay đổi không thể có hiện diện=\"tùy chọn\""); XmlSchemaParser.handleError(node, "composite để mã hóa dữ liệu có độ dài thay đổi phải có \"varData\"");

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

riêng tư tĩnh void addTypeWithNameCheck(final Map typeByNameMap, loại cuối cùng, nút nút cuối cùng) { if (typeByNameMap.get(type.name()) != null) { handWarning(node, "type đã tồn tại cho tên : " + type.name()); } checkForValidName(node, type.name()); typeByNameMap.put(type.name(), type); }

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

riêng tư tĩnh void validBlockLength( nút Nút cuối cùng, chiều dài được chỉ định cuối cùngBlockLength, chiều dài tính toán cuối cùng longdBlockLength) { if (0 != được chỉ địnhBlockLength && được tính BlockLength > được chỉ địnhBlockLength) { Chuỗi cuối cùng msg = "blockLength được chỉ định cung cấp không đủ không gian " + được tính toánBlockLength + " > " + được chỉ địnhBlockLength; xử lýError(nút, tin nhắn);

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

/** * Quét XML để tìm tất cả các định nghĩa thông báo và lưu vào bản đồ * * Tài liệu @param để phân tích cú pháp XML * @param xPath để tái sử dụng biểu thức XPath * @param typeByNameMap để sử dụng cho các đối tượng Loại * @return {@link java.util. Map} của lược đồId tới Tin nhắn * @throws Ngoại lệ về lỗi phân tích cú pháp */ public static Map findMessages( tài liệu Tài liệu cuối cùng, XPath cuối cùng xPath, Final Map typeByNameMap) ném Ngoại lệ { Final Map messageByIdMap = new HashMap<>(); Final ObjectHashSet DifferentNames = new ObjectHashSet<>(); .compile(MESSAGE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET), (nút) -> addMessageWithIdCheck(distinctNames, messageByIdMap, new Message(node, typeByNameMap), node)); trả về messageByIdMap }

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

typeByNameMap.put("double", new EncodedDataType("double", BẮT BUỘC, null, null, DOUBLE, 1, false)); forEach((NodeList)xPath.compile(TYPE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET), (nút) -> addTypeWithNameCheck(typeByNameMap, mới EncodedDataType(node), node)); forEach((NodeList)xPath.compile(COMPOSITE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET), (node) -> addTypeWithNameCheck(typeByNameMap, new CompositeType(node), node)); forEach((NodeList)xPath.compile(ENUM_XPATH_EXPR).evaluate(document, ).evaluate(document, XPathConstants.NODESET), (nút) -> addTypeWithNameCheck(typeByNameMap, SetType mới (nút), nút));

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

/** * Xử lý tình trạng lỗi do phân tích cú pháp. * * Nút @param là ngữ cảnh của cảnh báo * Thông điệp @param liên quan đến lỗi */ public static void handError(Nút nút cuối cùng, Thông báo chuỗi cuối cùng) { trình xử lý ErrorHandler cuối cùng = (ErrorHandler)node.getOwnerDocument().getUserData(ERROR_HANDLER_KEY); if (handler == null) { ném mới IllegalStateException("ERROR: " + formatLocationInfo(node) + msg); } else { handler.error(formatLocationInfo(node) + msg);

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

XmlSchemaParser.handleError(node, "composite cho tiêu đề thư phải có \"blockLength\""); XmlSchemaParser.handleError(node, "\"blockLength\" phải không được ký"); " phải là UINT16"); nút, "tổng hợp cho tiêu đề thư phải có \"templateId\""); XmlSchemaParser.handleWarning(node, "\"templateId\" phải là UINT16"); ; XmlSchemaParser.handleWarning(node, "\"schemaId\" phải là UINT16"); XmlSchemaParser.handleError(node, "composite cho tiêu đề thư phải có \"version\""); XmlSchemaParser.handleWarning(node, "\"version\" phải là UINT16");

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

chuỗi cuối cùng EncodingTypeStr = getAttributionValue(node, "encodingType"); else if (Integer.parseInt(getAttributionValue(encodingTypeNode, "length", "1")) != 1) EncodingType = PrimitiveType.get(getAttributionValue(encodingTypeNode, "primitiveType" )); handWarning(node, "Giá trị lựa chọn đã được xác định: " + c.primitiveValue()); handWarning(node, "Đã tồn tại lựa chọn cho tên: " + c.name());

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

Chuỗi cuối cùng refName = XmlSchemaParser.getAttributionValue(subTypeNode, "name"); Chuỗi cuối cùng refTypeName = XmlSchemaParser.getAttributionValue(subTypeNode, "type"); Chuỗi cuối cùng refOffset = Integer.parseInt ( 1")); Nút cuối cùng refTypeNode = (Node)xPath.compile( "/*[local-name() = 'messageSchema']/types/*[@name='" + refTypeName + "']") XmlSchemaParser.handleError(subTypeNode, "không tìm thấy loại ref : " + refTypeName); XmlSchemaParser.handleError(refTypeNode, "các loại ref không thể tạo phụ thuộc vòng tròn."); ném mới IllegalStateException("loại tham chiếu không thể tạo phụ thuộc vòng tròn");

Nguồn mẫu mã:nguồn gốc: logic thực/mã hóa nhị phân đơn giản

riêng tư tĩnh Định dạng chuỗiLocationInfo(nút nút cuối cùng) { Nút cuối cùng parentNode = node.getParentNode(); return "at " + "<" + parentNode.getNodeName() + (getAttributionValueOrNull(parentNode, "name") == null ? "> " : (" name=\"" + getAttributionValueOrNull(parentNode, "name") + "\"> ")) + "<" + node.getNodeName() + (getAttributionValueOrNull(node, "name") == null ? ">" : (" name=\"" + getAttributionValueOrNull(node, "name") + "\"> ") }

Nguồn mẫu mã:nguồn gốc: uk.co.real-logic/sbe

/** * Quét XML để tìm tất cả các định nghĩa thông báo và lưu vào bản đồ * * Tài liệu @param để phân tích cú pháp XML * @param xPath để tái sử dụng biểu thức XPath * @param typeByNameMap để sử dụng cho các đối tượng Loại * @return {@link java.util. Map} của lược đồId tới Tin nhắn * @throws Ngoại lệ về lỗi phân tích cú pháp */ public static Map findMessages( tài liệu Tài liệu cuối cùng, XPath cuối cùng xPath, Final Map typeByNameMap) ném Ngoại lệ { Final Map messageByIdMap = new HashMap<>(); forEach((NodeList)xPath.compile(MESSAGE_XPATH_EXPR).evaluate(document, XPathConstants.NODESET) , new NodeFunction() { public void thực thi (nút Node cuối cùng) ném XPathExpressionException { addMessageWithIdCheck(messageByIdMap, new Message(node, typeByNameMap), node } });
36 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress