我想编写一个函数,将(理论上)未知的XML数据结构解析为等效的PHP数组.
这是我的示例XML:
<?xml version="1.0" encoding="UTF-8"?>
<content>
<title>Sample Text</title>
<introduction>
<paragraph>This is some rudimentary text</paragraph>
</introduction>
<description>
<paragraph>Here is some more text</paragraph>
<paragraph>Even MORE text</paragraph>
<sub_section>
<sub_para>This is a smaller, sub paragraph</sub_para>
<sub_para>This is another smaller, sub paragraph</sub_para>
</sub_section>
</description>
</content>
Run Code Online (Sandbox Code Playgroud)
我从devarticles修改了这个DOM迭代函数:
$data = 'path/to/xmldoc.xml';
$xmlDoc = new DOMDocument(); #create a DOM element
$xmlDoc->load( $data ); #load data into the element
$xmlRoot = $xmlDoc->firstChild; #establish root
function xml2array($node)
{
if ($node->hasChildNodes())
{
$subNodes = $node->childNodes;
foreach ($subNodes as $subNode)
{
#filter …Run Code Online (Sandbox Code Playgroud) 当一个对象本身有一个相同类型的对象时,它叫什么?
例:
public class Foo{
public Foo myFoo;
}
Run Code Online (Sandbox Code Playgroud) 好吧,问题可能看起来很愚蠢,但无论如何我都会问它.
经过几个小时的努力让Spring + BlazeDS项目启动并运行后,我发现由于没有包含Spring等的正确依赖项而导致我的项目出现问题.我的WEB-INF/lib中缺少.jars文件夹,是的,傻我.
过了一会儿,我设法得到他们所属的所有.jar文件,并且它的高达12.5MB,其中超过30个!这关系到我,但它可能并且希望不应该担心.
Java如何在这些JAR文件中运行,它们确实占用了相当多的硬盘空间,考虑到它是压缩和编译的源代码.这样就可以在瞬间快速填充大量内存.
我的问题是:
Java是否会将整个.jar文件加载到内存中,例如说.jar中的类是实例化的?那些永远不会被使用的.jar中的东西呢.
.jars以某种方式缓存,以优化应用程序性能?
当加载单个.jar时,我理解该东西位于内存中并且可用于多个HTTP请求(即运行时服务器实例的生命周期),这与PHP中每次请求即时创建对象的情况不同,这是假设正确吗?
当我使用Spring时,我想,我必须包括所有那些繁琐的.jars,我不会只是使用本机Java,至少比如Hibernate和ORM解决方案更好吗?
到目前为止,Spring只花了额外的时间配置,额外的硬盘空间,额外的内存,CPU消耗,所以我担心框架会花费太多的应用程序性能,例如,我的BlazeDS服务器实现了IoC.
还有必须来ORM,一个单元测试框架和点点滴滴.这很容易让项目快速且不负责任地膨胀.
我在哪里划线?
征求关于"最佳"模式的反馈/选项/评论,以用于我的服务中的参考数据.
参考数据是什么意思?
我们以Northwind为例.订单与数据库中的客户相关.当我实现我的订单服务时,在某些情况下,当我只想要一个对客户的引用(例如一个键/值对)时,我会希望引用来自订单的"完整"客户和其他情况.
例如,如果我正在使用GetAllOrders(),我不想返回完全填写的订单,我想要返回订单的轻量版本,其中只包含每个订单的客户的参考数据.但是,如果我使用GetOrder()方法,我可能想填写客户详细信息,因为很可能需要此方法的消费者.可能还有其他情况我可能要求在某些方法调用期间填写客户详细信息,但留给其他人使用.
这是我提出的:
[DataContract]
public OrderDTO
{
[DataMember(Required)]
public CustomerDTO;
//etc..
}
[DataContract]
public CustomerDTO
{
[DataMember(Required)]
public ReferenceInfo ReferenceInfo;
[DataMember(Optional)]
public CustomerInfo CustomerInfo;
}
[DataContract]
public ReferenceInfo
{
[DataMember(Required)]
public string Key;
[DataMember(Required)]
public string Value;
}
[DataContract]
public CustomerInfo
{
[DataMember(Required)]
public string CustomerID;
[DataMember(Required)]
public string Name;
//etc....
}
Run Code Online (Sandbox Code Playgroud)
这里的想法是,因为在CustomerDTO中总是需要ReferenceInfo(它是一个通用的Key/Value对),所以我总是有ReferenceInfo.如果需要,它可以为我提供足够的信息以获取客户详细信息.让CustomerDTO需要ReferenceInfo的缺点是,当我获得完整的CustomerDTO(即填写了CustomerInfo)时,它可能有点过分,但至少我保证参考信息.
我可以使用其他一些模式或框架来使这个场景/实现"更清洁"吗?
我问的原因是,虽然我们可以简单地说在Northwind中总是返回一个完整的CustomerDTO,但这可能在简单的Northwind情况下工作正常.在我的例子中,我有一个对象,有25-50个字段是引用/查找类型数据.有些在不同的情况下加载比其他更重要,但我希望尽可能少地定义这些引用类型(这样我就不会进入"DTO维护地狱").
意见?反馈?评论?
谢谢!
我想按照以下方式做一些事情但是当我像这样使用它时,我得到一个解析错误告诉我实体需要直接跟随'&'字符:
<ice:selectManyCheckbox
rendered="#{!bean1.condition1 && bean2.condition2}"
value="#{bean1.selected}">
<f:selectItems value="#{bean2.items}" />
</ice:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)
如何渲染以检查来自2个不同bean的条件?
我有一个产品型号,有许多部分,一个部分可以属于许多产品.
剖面模型具有Feature,Standard和Option的子类.
我的模特是:
class Product < ActiveRecord::Base
has_and_belongs_to_many :categories
has_and_belongs_to_many :sections
end
class Section < ActiveRecord::Base
has_and_belongs_to_many :products
end
class Feature < Section
end
class Standard < Section
end
class Option < Section
end
Run Code Online (Sandbox Code Playgroud)
在我的产品控制器中,我可以这样做:
@product.sections.build
Run Code Online (Sandbox Code Playgroud)
我希望能够像这样的东西到达子类:
@product.features.build
@product.standards.build
@product.options.build
Run Code Online (Sandbox Code Playgroud)
但它只是错误的"未定义的方法'功能'"等.
请有人能告诉我怎么做吗?
当我卸载我的服务时,我得到了错误,它说我必须在卸载之前停止这样的服务.这是不能令人满意的 - 卸载程序应该自动停止它.
我在几个月前发现了一个博客或新闻组的帖子,并让它正常工作,但现在它已停止为我工作.我没有链接到帖子......也许别人知道它在哪里?:)我想我改变了一些微妙的东西,它停止了工作.我发现Wix很难排除故障.
我正在使用以下include来从注册表中获取属性X_ WIN_ SERVICE_ NAME(抱歉,我不知道如何避免_转义在这里).它在安装时无关紧要,因为在那种情况下我使用输入文件显式设置它.这个包含在我的wxs文件中的任何组件之前使用.
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?ifndef SetupXWinServiceRegistryProperties ?>
<?define SetupXWinServiceRegistryProperties ?>
<?define XWinServiceRegistryKey='Software\X\Y'?>
<Property Id="X_WIN_SERVICE_NAME">
<RegistrySearch Id="XWinServiceNameSearch"
Root="HKLM"
Key="$(var.XWinServiceRegistryKey)"
Name="ServiceName"
Type="raw"/>
</Property>
<?endif?>
</Include>
Run Code Online (Sandbox Code Playgroud)
以下include组件用于在安装时保存注册表值:
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?ifndef WriteXWinServiceRegistryProperties ?>
<?define WriteXWinServiceRegistryProperties ?>
<Component Id="CompWriteXWinServiceRegistryProps"
Guid="some guid">
<!-- Write properties to the registry. Then they will be
accessable during uninstall. -->
<RegistryValue Root="HKLM"
Key="$(var.XWinServiceRegistryKey)"
Name="ServiceName"
Type="string"
Value="[X_WIN_SERVICE_NAME]"
Action="write" />
</Component>
<?endif?>
</Include>
Run Code Online (Sandbox Code Playgroud)
我在安装后检查了我的系统,并在那里正确写入了注册表值.我的组件中设置服务的部分如下所示:
<ServiceInstall Id="ServiceInstallXWinService"
Name="[X_WIN_SERVICE_NAME]"
Start="auto"
DisplayName="xxx"
Description="yyy"
Account="[X_WIN_SERVICE_USER]"
Password="[X_WIN_SERVICE_PASSWORD]"
Type="ownProcess"
ErrorControl="normal"
Vital="yes" /> …Run Code Online (Sandbox Code Playgroud) 我正在寻找xUnit类型的单元测试框架,它允许我使用PowerShell脚本测试PowerShell函数.
这是情况.我工作的公司有很多现有的Tcl代码,但有些人想要开始使用python.很高兴能够重用一些现有的Tcl代码,因为这已经花了钱.此外,一些测试设备只有Tcl API.
所以,我想到的一种方法是使用子进程模块调用一些Tcl脚本.
我有兴趣开发一个对我们公司现场的一些员工有用的iPhone应用程序.我想知道是否可以这样做,如果我仍然必须通过Apple应用程序批准程序才能运行?