小编JLR*_*she的帖子

有没有办法通过节点名称获取简单的 XML 子元素?

在 PHP 中,是否存在通过节点名称(递归)获取一个或多个子元素的现有方法,或者您是否必须自己编写一个函数?

例如,这是我的 XML:

<parent>
    <child>
        <grandchild>Jan</grandchild>
        <grandchild>Kees</grandchild>
    </child>
</parent>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种返回如下内容的方法: Array( [0] => 'Jan', [1] => 'Kees' )

通过调用类似的东西:

$grandchildren = $xml->children('grandchild');
Run Code Online (Sandbox Code Playgroud)

根据文档,上述内容确实存在,但仅适用于名称空间。

e:下面接受的答案有效。这是我跑来测试它的。

$xml = '
    <parent>
        <child>
            <grandchild>Jan</grandchild>
            <grandchild>Kees</grandchild>
        </child>
    </parent>';

$L_o_xml = new SimpleXMLElement($xml);

$L_o_child = $L_o_xml->xpath('//grandchild');

foreach( $L_o_child as $hi ){
   print "\n".(string)$hi;
}
Run Code Online (Sandbox Code Playgroud)

简单打印:

Jan
Kees
Run Code Online (Sandbox Code Playgroud)

php xml xpath simplexml

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

控制switch语句中的结构

为什么if块中的代码以任何方式执行?

switch(v)
{
case a:
    break;
...
if(condition)
{
    case f:
        ...
        break;
    case g:
        ...
        break;
}
...
case z:
    ...
    break;
default:
}
Run Code Online (Sandbox Code Playgroud)

c++ switch-statement

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

在C#中投射"div"

有没有办法以编程方式创建<DIV>以获取属性innerHtml?

 HtmlGenericControl div = new HtmlGenericControl("div");
Run Code Online (Sandbox Code Playgroud)

我怎么能得到div.innerHTML

.net html c# asp.net c#-4.0

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

在linq中选择all by where子句

这是我的代码,

 Name obj = new Name();
 obj = DB.Names.Where(x => x.age == 20 ).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

我想要做的就是更新所有的Nameage=20,

 obj.Name = " Mr " + obj.Name ;
 DB.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

但是.SingleOrDefault()只能返回一个值,我想全力以赴age=20.

c# linq where

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

HtmlAgilityPack NextSibling.InnerText值为空

我正在使用HtmlAgilityPack抓取一些数据.

HTML看起来像这样:

<div id="id-here">
  <dl>
    <dt> Field Name </dt>
    <dd> Value for above field name </dd>
    <dt> Field Name </dt>
    <dd> Value for above field name </dd>
    <dt> Field Name </dt>
    <dd> Value for above field name </dd>
  </dl>
</div>
Run Code Online (Sandbox Code Playgroud)

现在我遇到的问题是,并不总是有一定数量的字段,所以我无法可靠地访问它们,如:

//*[@id="id-here"]/dl[1]/dd[1]
Run Code Online (Sandbox Code Playgroud)

因为dd [1]可能是一个页面上的名称和另一个用户未能填写名称的电话,因此隐藏了字段.

所以我抓住所有的DT和DD节点,如下所示:

//*[@id="id-here"]/dl[1]/dt | //*[@id="id-here"]/dl[1]/dd
Run Code Online (Sandbox Code Playgroud)

现在我检查每个节点以查看它是否与我想要的字段匹配,并采用NextSibling值,如下所示:

    foreach (HtmlNode node in details)
    {
        if (node.InnerText.Contains("Tel:")) telephone = node.NextSibling.InnerText;
        if (node.InnerText.Contains("Email:")) email = node.NextSibling.InnerText;
    }
Run Code Online (Sandbox Code Playgroud)

这适用于电话,但出于某种原因,当"Email:"节点出现时,两个NextSibling.InnerHTML&NextSibling.InnerText都是空白的,尽管下一个兄弟肯定有数据.如果我真的去那个nodedetails看它的InnerHTML是整个格式化链接和InnerText是电子邮件地址.

是 …

c# xpath siblings html-agility-pack

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

Javascript查找除<a>标签中的文本之外的所有文本

我有一个div,这个div可以(或不能)将html元素作为子元素.使用我的javascript,我需要找到此div中所有出现的单词,除了<a>标签中的那些单词.

例如:

<div id="dictionable">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
    <br/><br/>
    <a href="#lorem">lorem</a>
    <br/><br/>
    <p>lorem</p>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试使用我的超低功能构建一个正则表达式,失败了.所以我用Google搜索并发现了这个:

var pattern = new RegExp('(lorem)(?![^<]*>|[^<>]*</)', 'gim');
Run Code Online (Sandbox Code Playgroud)

这个正则表达式发现每次出现"lorem"但不是每个标签.我只需要排除A标签.

谁能帮助我?

html javascript regex

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

在JavaScript中同时声明变量和函数

谁能解释为什么

function x() {
  console.log("Hello!");
}
var a = x;
a();
x();
Run Code Online (Sandbox Code Playgroud)

产生

你好!
你好!

但是这个

var a = function x() {
  console.log("Hello!");
}
a();
x();
Run Code Online (Sandbox Code Playgroud)

当你尝试调用函数x时会抛出错误?第二个x函数不被视为提升函数吗?我在nodejs和浏览器中尝试了这个.

javascript scope function node.js

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

Angular服务返回undefined

我的角度服务有问题.

我的服务有下一个代码:

app.service("Utilidades", ['$http', '$window', function ($http, $window) {
return {
    Get: function (urlAbsoluta, parametros, callback) {
        var Utilidades = this;

        $http
            .get(app.UrlBase + urlAbsoluta, parametros)
            .then(function (data) {
                var Datos = angular.fromJson(data);

                Utilidades.GuardarToken(Datos.Token);

                callback(Datos);
            });
    },


    ObtenerMenu: function () {
        var Utilidades = this;

        Utilidades.Get("Administracion/Api/Usuarios/Menu", {}, function (Datos) {
            Datos = angular.fromJson(Datos.data);

            if (Datos.Error == "") {
                return Datos.Resultado;
            } else {
                return "";
            }
        });
    }
}
}]);
Run Code Online (Sandbox Code Playgroud)

然后,在我的控制器中,我有下一个代码:

app.controller('LoginCtrl', ['$scope', '$http', '$location', 'Utilidades',
function Iniciador($scope, $http, $location, …
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs angular-services

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

Visual Studio 的“添加服务引用”如何反序列化对象?

在项目中Visual Studio 2013使用时如何反序列化对象Add Service Reference?我问是因为我有以下课程:

    public class RTMImagePackage
    {
        private int maxImages = 15;

        [DataMember(EmitDefaultValue = false)]
        public int MaxImages
        {
            get { return this.maxImages; }
            private set { this.maxImages = value; }
        }

        [OnDeserialized]
        void OnDeserialized(StreamingContext c)
        {
            if (maxImages == 0)
            {
                maxImages = 15;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果使用本地IIS,然后我自我主机创建一个单独的项目,并使用添加此WCF服务Add Service Reference的任何新的实例RTMImagePackage总是有一个MaxImages0值,即使我在多个地方将其设置为15,甚至里面开头用的方法OnDeserialized

如果我加入一些断点,我可以看到该OnDeserialized方法甚至从未在 Web 服务端调用,即使我尝试使用适当的断点更新服务引用。

基本上我试图保证客户端将始终具有MaxImages当它产生的代理类设置为15 WITHOUT不必使用部分类。有没有明确的方法来做到这一点?我检查了其他答案,他们的方法是使用OnDeserializedorOnDeserializing但这似乎对我不起作用。

有小费吗?

.net c# wcf serialization visual-studio

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

如何将日语半字节字符转换为全字节字符

我必须尝试将文本框中的每个输入转换为完整字节字符,请在我的代码下面找到...

\n\n
 static convertToFullWidth(string: any) {\n    if(string){\n      var listOfCharacters = '';\n      for (let index = 0; index < string.length; index++) {\n        var selectedElement = string[index].charCodeAt(0);\n        if (0x0020 < selectedElement && selectedElement < 0x007F) {\n          selectedElement = 0xFF00 + (selectedElement - 0x0020);\n        }\n        if (0x0020 === selectedElement) {\n          selectedElement = 0x3000;\n        }\n        listOfCharacters += String.fromCharCode(selectedElement);\n      }\n      return listOfCharacters;\n    }\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

尝试:

\n\n

工作输入 -\n \xe3\x82\xa6\xe3\x83\x9e\xe3\x83\xb3\xe3\x82\xb0\xe3\x83\x8a\xe3\x82\xa4 \n不工作\n \xef\xbd \xb3\xef\xbe\x8f\xef\xbe\x9d\xef\xbd\xb8\xef\xbe\x85\xef\xbd\xb2

\n

javascript unicode cjk typescript

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