小编hal*_*oei的帖子

使用StAX读取XML字符串

我第一次使用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)

java stax xml-parsing

10
推荐指数
2
解决办法
4万
查看次数

控制器中的Artisan Call输出?

我有一个复杂的工匠司令部,我也想在我的控制器中打电话.这样可行.除了返回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命令的最后一行在应该返回的最后一行返回..怎么样?

php laravel laravel-5

9
推荐指数
2
解决办法
9167
查看次数

使用Transformer处理空CDATA时的IndexOutOfBoundsException

我想从大型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)

java xml stax

6
推荐指数
1
解决办法
598
查看次数

Java静态自引用

非静态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;吗?

java static reference

5
推荐指数
1
解决办法
4112
查看次数

如何管理 MySQL Workbench 中的 SQL 选项卡?

我经常需要的每个项目都有多个 SQL 查询。我的问题是,我的所有项目都需要 Workbench 中相同的 MySQL 连接。

所以我一直打开大量的 SQL 选项卡,如下所示:

在此输入图像描述

由于选项卡的数量超过了显示器的宽度,因此我必须左右滚动才能找到一些查询。执行此操作的唯一方法是单击两个箭头(屏幕截图的右侧)。这真的很不清楚而且很烦人。

有更好的方法来处理吗?是否可以在多个 SQL 选项卡之间快速切换或以其他方式排列它们?

mysql-workbench

5
推荐指数
2
解决办法
7192
查看次数

使用java中的Apache POI从数字单元读取整数

我有一个应用程序,使用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)

java xls apache-poi numberformatexception

4
推荐指数
2
解决办法
2万
查看次数

检查enum是否有多个值

我有一个枚举 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)

java enums conditional-statements

4
推荐指数
3
解决办法
5455
查看次数

应用程序根据 XSD 验证 XML:允许 XML 中的 XSD 引用

我的应用程序根据 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 文件并删除该属性。但必须有更好的解决方案。

我该如何处理?

java xml xsd dom

4
推荐指数
1
解决办法
517
查看次数

无法使用 Laravel Echo、laravel-echo-server 和 socket.io 进行广播

我已经使用自己的实现成功地使用 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)

php websocket socket.io laravel laravel-5

4
推荐指数
1
解决办法
7744
查看次数

Laravel 验证规则:required_without

我有两个字段:EmailTelephone

我想创建一个验证,其中需要两个字段之一,并且如果设置了一个或两个字段,则它应该是正确的格式。

我尝试了这个,但它不起作用,但我需要两者

 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)

php validation laravel

4
推荐指数
1
解决办法
9221
查看次数