标签: xml-simple

Android,帮助简单框架PersistenceException

我正在尝试使用org.simpleframework.xml.用于处理Android项目中的xml数据的类.我无法理解如何构建我的类"Point"构造函数以匹配xml定义:在运行时我得到此异常:

org.simpleframework.xml.core.PersistenceException: Constructor not matched for class koine.marcos.wifidemo.Point
Run Code Online (Sandbox Code Playgroud)

我的xml数据是这样的:


文件points.xml:

<?xml version="1.0" encoding="utf-8"?>
<points>
   <point id="La Gioconda">
      <rssi ssid="beacon1" bssid="00:21:91:d1:36:62">-52</rssi>
      <rssi ssid="beacon2" bssid="00:12:a9:03:23:32">-97</rssi>
   </point>
   <point id="La Pietà">
      <rssi ssid="beacon1" bssid="00:21:91:d1:36:62">-68</rssi>
      <rssi ssid="beacon2" bssid="00:12:a9:03:23:32">-83</rssi>
   </point>
</points>
Run Code Online (Sandbox Code Playgroud)

文件Rssi.java:

@Root
public class Rssi {

    @Attribute(required=false)
    protected String id;

    @Element(required=false)
    protected Integer value;

    ... getters and setters ...
}
Run Code Online (Sandbox Code Playgroud)

文件point.java:

@Root
public class Point {
    @Attribute
    protected String id;

    @ElementMap(entry="rssi", key="id", attribute=false,
                inline=true, required=false)
    private Map<String,Integer> rssiMap;

    public Point(String id, Map<String,Integer>rssi) { …
Run Code Online (Sandbox Code Playgroud)

xml android xml-serialization xml-simple

2
推荐指数
1
解决办法
3165
查看次数

如何将Data :: Dumper输出转换回Perl数据结构?

我想知道你是否可以对我已经做了几天的代码有所了解.

我一直在尝试使用XMLout()和XMLin()方法将Perl解析的哈希转换回XML,并且使用这种格式非常成功.

#!/usr/bin/perl -w
use strict;

# use module
use IO::File;
use XML::Simple;
use XML::Dumper;
use Data::Dumper;
my $dump = new XML::Dumper;

my ( $data, $VAR1 );

Topology:$VAR1 = {  
   'device' => {  
    'FOC1047Z2SZ' => {  
      'ChassisID' => '2009-09',  
      'Error' => undef,  
      'Group' => {  
        'ID' => 'A1',  
        'Type' => 'Base'  
      },  
      'Model' => 'CATALYST',  
      'Name' => 'CISCO-SW1',  
      'Neighbor' => {},  
      'ProbedIP' => 'TEST',  
      'isDerived' => 0  
    }  
  },  
  'issues' => [  
    'TEST'  
  ]  
};  

# create object  
my $xml …
Run Code Online (Sandbox Code Playgroud)

perl xml-simple

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

如何使用XML :: Simple访问Perl中嵌套XML结构中的深层数据?

我正在使用XML :: Simple,我在变量$ xmldata中有以下XML结构,我需要通过Perl代码访问它.

<root>
    <a>sfghs</a>
    <b>agaga</b>
    <c>
       <c1>sgsfs</c1>
       <c2>sgsrsh</c2>
    </c>
    <d>
        <d1>agaga</d1>
        <d2>asgsg</d2>
    </d>
</root>
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码访问a和b的值:

$aval = $xmldata->{a}[0];
$bval = $xmldata->{b}[0] ;
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是:如何获得say,d2的值?

xml perl xml-simple

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

如何在Perl的XML :: Simple中禁用子标签排序?

我只想找到在XML :: Simple中禁用排序操作的方法

例如:

#!/usr/bin/perl

use strict;
use warnings;

use XML::Simple;

my %my_xml = (
    NAME  => [ 'test' ],
    EMAIL => [ 'test@example.com' ],
    ID    => 12,
);

my $xs = XML::Simple->new;
print $xs->XMLout(\%my_xml, RootName => "datas", NoSort => 1);

__END__
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

<datas ID="12">
  <EMAIL>test@example.com</EMAIL>
  <NAME>test</NAME>
</datas>
Run Code Online (Sandbox Code Playgroud)

但我希望输出为:

<datas ID="12">
  <NAME>test</NAME>
  <EMAIL>test@example.com</EMAIL>
</datas>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

xml perl xml-simple

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

XML :: Simple似乎不适用于URL.它是否正确?

我使用以下脚本:

#!/usr/local/bin/perl -wT

use strict;
use warnings;

print "Content-type: text/html\n\n";
print "xml reader";

# use module
use XML::Simple;
use Data::Dumper;

#print Dumper (XML::Simple->new()->XMLin());
Run Code Online (Sandbox Code Playgroud)

它将在我的xml文件中读取,名为xml.xml

如果我现在将xml文件移出我的cgi-bin,请更改其名称并使用以下命令引用它:

#print Dumper (XML::Simple->new()->XMLin("../resource.xml"));
Run Code Online (Sandbox Code Playgroud)

它仍然有效.

如果我现在尝试使用url而不是脚本不返回任何内容:

print Dumper (XML::Simple->new()->XMLin("http://digitalessence.net/resource.xml"));
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用和不使用http://,没有www和各种不同的方法,但它不会返回任何内容.

我在这里做过傻事还是不加载远程网址?

谢谢.

xml perl xml-simple

1
推荐指数
2
解决办法
2495
查看次数

Perl,使用XML解析XML ::简单且有问题

我在Perl中解析xml文件,一切似乎都很好用一个问题.我有相同模式的文件,但它们从解析器返回不同类型的数据.这是一个简化的例子:

<tests>
       <test>
          <data1>Hi</data1>
          <data2>Hello</data2>
       </test>
       <test>
          <data1>Hi2</data1>
          <data2>Hello2</data2>
       </test>
  </tests>
Run Code Online (Sandbox Code Playgroud)

在转储中,这将返回以下内容:(注意test是两个哈希的数组)

$VAR1 = {
          'test' => [
                    {
                      'data2' => 'Hello',
                      'data1' => 'Hi'
                    },
                    {
                      'data2' => 'Hello2',
                      'data1' => 'Hi2'
                    }
                  ]
        };
Run Code Online (Sandbox Code Playgroud)

现在,对于一组类似的数据,但只有一个"测试"实体,如下所示:

  <tests>
       <test>
          <data1>Hi</data1>
          <data2>Hello</data2>
       </test>
  </tests>
Run Code Online (Sandbox Code Playgroud)

这返回类似的数据,EXCEPT测试实体不再是一个数组,而是一个单数哈希:

$VAR1 = {
          'test' => {
                    'data2' => 'Hello',
                    'data1' => 'Hi'
                  }
        };
Run Code Online (Sandbox Code Playgroud)

我的困境是我的代码需要一个数组,因为这是常态.但是,当只有一个实体的机会很小时,它将返回该实体的哈希值.我的问题是,我如何处理哈希实体,就好像它是一个数组.还是测试一下?

现在我检索数组的代码是这样的:

foreach $test (@{$data->{'tests'}->{'test'}})
{
   do something with $test
}
Run Code Online (Sandbox Code Playgroud)

但是使用散列,它会给出错误"Not a ARRAY reference".我希望这是足够的细节!谢谢!!!

arrays perl hash xml-simple xml-parsing

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

我在Perl中的哈希中声明哈希有什么问题?

我正在努力使用Perl中的哈希声明:

my %xmlStructure = {
            hostname    =>  $dbHost,
            username    =>  $dbUsername,
            password    =>  $dbPassword,
            dev_table   =>  $dbTable,
            octopus     =>  {
                                alert_dir       =>  $alert_dir,
                                broadcast_id    =>  $broadcast_id,
                                system_id       =>  $system_id,
                                subkey          =>  $subkey
                            }
 };
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌搜索,但我无法提出解决方案,我所做的每一个修改都会在另一个警告或我不想要的结果中结束.

Perl投诉与以下文字:

Reference found where even-sized list expected at ./configurator.pl line X.
Run Code Online (Sandbox Code Playgroud)

我这样做,因为我想使用该模块:

XML::Simple
Run Code Online (Sandbox Code Playgroud)

为了生成具有以下结构的XML文件:

 <settings>
  <username></username>
  <password></password>
  <database></database>
  <hostname></hostname>

  <dev_table></dev_table>

  <octopus>
      <alert_dir></alert_dir>
      <broadcast_id></broadcast_id>
      <subkey></subkey>
  </octopus>
 </settings>
Run Code Online (Sandbox Code Playgroud)

所以有点像:

my $data = $xmlFile->XMLout(%xmlStructure);
warn Dumper($data);
Run Code Online (Sandbox Code Playgroud)

将显示后一个xml样本结构.

更新:

我忘了提到我也尝试使用括号而不是花括号作为哈希引用,虽然它似乎工作,但XML文件编写不正确:我最终得到以下结构:

<settings>

 <dev_table>5L3IQWmNOw==</dev_table>
 <hostname>gQMgO3/hvMjc</hostname>

 <octopus>
  <alert_dir>l</alert_dir>
  <broadcast_id>l</broadcast_id>
  <subkey>l</subkey>
  <system_id>l</system_id>
 </octopus> …
Run Code Online (Sandbox Code Playgroud)

perl hash xml-simple

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

是否有可能捕获在另一个perl模块内发生的消息?

我有一个用Perl编写的SOAP客户端,使用LWP包进行HTTPS传输和XML::Simple解析XML有效负载.有时候调用会XMLin因为die()而失败,然后我的脚本就会死掉,并且必须由我编写的监控程序重新启动以检测这一点.这真的不可取,所以我想知道Perl是否有任何像C++异常处理机制的设施,我可以捕获骰子消息,忽略它报告错误并让我的脚本继续就像发生错误一样?我已经阅读了许多Perl书籍并寻找了这个,但我还没有找到一些东西.这是杀死我的应用程序,但我不想编写自己的XML解析代码,除非我绝对必须.

perl die lwp xml-simple

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

Perl不解释ticks中的值,称其为未定义的值

我正在编写一个子程序,使用该XML::Simple模块从配置文件中提取信息.

XML文件具有以下结构

<main>
  <server hostname="blahblah" ... more_attributes="more"/>
  <server etc./>
  <server etc./>
</main>
Run Code Online (Sandbox Code Playgroud)

代码工作正常.它将XML数据按预期放入嵌套哈希中.但是,当我想使用当前系统将一台服务器与其他服务器隔离时,我hostname遇到了问题.

我想这一行

my %systemHash = %{$xmlObject->{SERVER}->{`hostname`}};
Run Code Online (Sandbox Code Playgroud)

应将当前计算机的主机名插入最后一组括号中.但是当执行我得到的代码时

Can't use an undefined value as a HASH reference
Run Code Online (Sandbox Code Playgroud)

xml perl xml-simple

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

避免出现“找不到parserDetail.ini”警告

使用时XML::Simple,我总是会收到警告

could not find ParserDetails.ini in /usr/lib/perl5/vendor_perl/5.8.8/XML/SAX
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情

{
no warning qw(insert_your_magic_here);
my $hash_ref = XMLin('my_file.xml')
}
Run Code Online (Sandbox Code Playgroud)

我用红色的perldoc来警告http://perldoc.perl.org/warnings.html,并找到了“ Cathegory hiearchy”,但我不知道此警告属于哪个类别。

你知道吗?

您可能知道那些ParserDetail打算做什么?

perl xml-simple

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

标签 统计

xml-simple ×10

perl ×9

xml ×5

hash ×2

android ×1

arrays ×1

die ×1

lwp ×1

xml-parsing ×1

xml-serialization ×1