我第一次使用stax来解析XML String.我找到了一些例子,但无法让我的代码工作.这是我的代码的最新版本:
public class AddressResponseParser
{
private static final String STATUS = "status";
private static final String ADDRESS_ID = "address_id";
private static final String CIVIC_ADDRESS = "civic_address";
String status = null;
String addressId = null;
String civicAddress = null;
public static AddressResponse parseAddressResponse(String response)
{
try
{
byte[] byteArray = response.getBytes("UTF-8");
ByteArrayInputStream inputStream = new ByteArrayInputStream(byteArray);
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader reader = inputFactory.createXMLStreamReader(inputStream);
while (reader.hasNext())
{
int event = reader.next();
if (event == XMLStreamConstants.START_ELEMENT)
{
String element = reader.getLocalName(); …Run Code Online (Sandbox Code Playgroud) 我有一个复杂的工匠司令部,我也想在我的控制器中打电话.这样可行.除了返回Exitcode而不是输出.
use Symfony\Component\Console\Output\BufferedOutput; # on top
public function foobar(Request $request)
{
$this->validate($request, [
'date' => 'required|date_format:Y-m-d',
]);
$output = new BufferedOutput;
$exitCode = Artisan::call('foo:bar', [
'datum' => $request->get('date'),
], $output);
return $exitCode; # returns 0;
return dd($output->fetch()); # returns ""
}
Run Code Online (Sandbox Code Playgroud)
我想要命令的输出.怎么做?我的Artisan命令的最后一行在应该返回的最后一行返回..怎么样?
我想从大型XML文件中提取特定节点.这很有效,直到出现没有任何内容的狂野CDATA.
输出:
ERROR: ''
javax.xml.transform.TransformerException: java.lang.IndexOutOfBoundsException
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:732)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:336)
at xml_test.XML_Test.extractXML2(XML_Test.java:698)
at xml_test.XML_Test.main(XML_Test.java:811)
Caused by: java.lang.IndexOutOfBoundsException
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getTextCharacters(XMLStreamReaderImpl.java:1143)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.handleCharacters(StAXStream2SAX.java:261)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.bridge(StAXStream2SAX.java:171)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.parse(StAXStream2SAX.java:120)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:674)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:723)
... 3 more
---------
java.lang.IndexOutOfBoundsException
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getTextCharacters(XMLStreamReaderImpl.java:1143)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.handleCharacters(StAXStream2SAX.java:261)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.bridge(StAXStream2SAX.java:171)
at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.parse(StAXStream2SAX.java:120)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:674)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:723)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:336)
at xml_test.XML_Test.extractXML2(XML_Test.java:698)
at xml_test.XML_Test.main(XML_Test.java:811)
Run Code Online (Sandbox Code Playgroud)
代码:
InputStream stream = new FileInputStream("C:\\myFile.xml");
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(stream);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
String extractPath = "/root";
String path …Run Code Online (Sandbox Code Playgroud) 非静态setter方法可以如下所示:
private int var;
public void setVar(int var) {
this.var = var;
}
Run Code Online (Sandbox Code Playgroud)
我无法找到如何使用静态方法解决这个问题:
private static int var;
public static void setVar(int var) {
// ???
}
Run Code Online (Sandbox Code Playgroud)
一种解决方案是写myClass.var = var;.但那很难看,因为当我重命名我的课程时,我必须找到并替换所有出现的内容.另一种解决方案是将参数重命名为v和写入var = v;.对我来说,这也是丑陋的.
真的没有办法像在PHP中解决这个问题self::var = var;吗?
我经常需要的每个项目都有多个 SQL 查询。我的问题是,我的所有项目都需要 Workbench 中相同的 MySQL 连接。
所以我一直打开大量的 SQL 选项卡,如下所示:

由于选项卡的数量超过了显示器的宽度,因此我必须左右滚动才能找到一些查询。执行此操作的唯一方法是单击两个箭头(屏幕截图的右侧)。这真的很不清楚而且很烦人。
有更好的方法来处理吗?是否可以在多个 SQL 选项卡之间快速切换或以其他方式排列它们?
我有一个应用程序,使用apache poi读取xls表.当单元格具有数值时,我通过row.getCell(i).getNumericValue()读取它.但它返回浮点数.就像单元格值为1一样,它返回1.0.我可以将它转换为int吗?任何帮助,将不胜感激.我尝试了Integer.parseInt(value) - 但它抛出了NumberFormat异常.感谢任何帮助.这里是伪代码:
FileInputStream file = new FileInputStream(new File("C:\\test.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(file);
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
String value= String.valueOf(cell.getNumericCellValue());
int intVal = Integer.parseInt(value)-->>throws Exception
Run Code Online (Sandbox Code Playgroud) 我有一个枚举 FileType
public static enum FileType {
CSV, XML, XLS, TXT, FIXED_LENGTH
}
FileType fileType = FileType.CSV;
Run Code Online (Sandbox Code Playgroud)
是否有更好(更清洁)的方法来检查fileType多个值而不是以下(像"myString".matches("a|b|c");)?
if(fileType == FileType.CSV || fileType == FileType.TXT || fileType == FileType.FIXED_LENGTH) {}
Run Code Online (Sandbox Code Playgroud) 我的应用程序根据 XSD(在 jar 中)验证 XML :
private Document createAndValidate(Schema schema) throws IOException, SAXException, ParserConfigurationException {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setValidating(false); // DTD validation
documentBuilderFactory.setNamespaceAware(false);
documentBuilderFactory.setSchema(schema);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
documentBuilder.setErrorHandler(new SaxErrorHandler());
return documentBuilder.parse(file.toFile());
}
Run Code Online (Sandbox Code Playgroud)
到目前为止效果很好。
但由于使用引用的 XSD(可以在本地计算机上的任何位置)创建 XML 更容易,因此 XML 开始如下:
<?xml version="1.0" encoding="UTF-8"?>
<Definition
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="C:\definition_schema.xsd">
Run Code Online (Sandbox Code Playgroud)
现在,当我的应用程序解析该 XML 文件时,由于此 XSD 引用而无法验证:
cvc-complex-type.3.2.2:属性“xsi:noNamespaceSchemaLocation”不允许出现在“定义”中
我试图添加<xs:attribute name="xsi:noNamespaceSchemaLocation" type="xs:string" />到Definition元素,但该属性名称无效。
在我(重新)打开和验证它之前,我可以打开 XML 文件并删除该属性。但必须有更好的解决方案。
我该如何处理?
我已经使用自己的实现成功地使用 Laravel 设置了 websockets。现在我想切换到 Laravel Echo 和laravel-echo-server。但是,经过数小时的尝试和阅读我能找到的每一份文档后,我确实需要进一步的帮助。
当我触发事件时发生了什么:队列工作人员根据需要处理事件:“已处理:Illuminate\Broadcasting\BroadcastEvent ”。但是在 laravel-echo-server 控制台和客户端上都没有任何反应。
一些信息:
Laravel 运行在 8001 端口
Redis 在 6379 上运行
队列工作者正在运行(php artisan queue:work)
Laravel、Redis 和 laravel-echo-server 运行在同一台机器上 (192.168.134.214)
尝试私人频道时,身份验证BroadcastServiceProvider似乎有效(如果失败,服务器会将错误写入控制台)
客户端使用 laravel-echo-server 的 socket.io 脚本: <script src="//192.168.134.214:6001/socket.io/socket.io.js"></script>
我的 .env 的摘录:
BROADCAST_DRIVER=redis
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
Run Code Online (Sandbox Code Playgroud)
laravel-echo-server.json:
{
"appKey": "<myAppKey>",
"authEndpoint": "/broadcasting/auth",
"authHost": "http://localhost:8001",
"database": "redis",
"databaseConfig": {
"redis": {
"port": "6379",
"host": "http://localhost"
}
},
"devMode": true,
"host": "192.168.134.214",
"port": "6001",
"sslCertPath": "",
"sslKeyPath": …Run Code Online (Sandbox Code Playgroud) 我有两个字段:Email和Telephone
我想创建一个验证,其中需要两个字段之一,并且如果设置了一个或两个字段,则它应该是正确的格式。
我尝试了这个,但它不起作用,但我需要两者
public static array $createValidationRules = [
'email' => 'required_without:telephone|email:rfc',
'telephone' => 'required_without:email|numeric|regex:/^\d{5,15}$/',
];
Run Code Online (Sandbox Code Playgroud)