2015-04-16 2 views
0

Я хотел бы извлечь 1-е два предложения под тегом <P>.Как извлечь конкретное значение из строки xml?

, например (входная строка):

<P align=justify><STRONG>Pricings<BR></STRONG>It was another active week for names leaving the database. The week's prints consisted of two ILS, and sever ITS.</P> 

требуемая выходная строка:

It was another active week for names leaving the database. The week's prints consisted of two ILS, and sever ITS. 

В настоящее время моя функция ниже бросает следующее сообщение об ошибке:

System.Xml.XmlException: 'justify' is an unexpected token. The expected token is '"' or ''

price = bottom.Substring(bottom.IndexOf("Pricings"), 8); 

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(bottom); 


XmlNodeList pList = doc.SelectNodes("/P[@align='justify']/strong"); 

foreach (XmlNode pValue in pList) 
{ 
    string innerText = pValue.ChildNodes[0].InnerText; 
    innerText = result; 
} 

Я немного не понимаю, как решить эту проблему. Благодарим вас за дальнейшую помощь.

+0

Ваш HTML не является допустимым строка XML. Его нельзя загрузить с помощью XmlDocument. – wonderbell

ответ

2

Это не строка XML, а HTML.

Поскольку сам HTML часто может быть плохо сформированным (и в вашем случае он не является корректным), как правило, вы не можете использовать синтаксические анализаторы XML для синтаксического анализа HTML.

Вместо этого вы можете использовать HTML Agility Pack (рекомендуется) или проанализировать этот текст с помощью регулярных выражений (как правило, не рекомендуется, но иногда возможно).

Вот пример кода, как получить данные с помощью Youd HtmlAgility пакет:

var s = "<P align=justify><STRONG>Pricings<BR></STRONG>It was another active week for names leaving the database. The week's prints consisted of two ILS, and sever ITS.</P>"; 

var doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(s); 

string result; 
var p = doc.DocumentNode.SelectSingleNode("p"); 
if (p.ChildNodes.Count == 2) 
    result = p.ChildNodes[1].InnerText; 

Примечание: Html Agility пакет также доступен как NuGet пакет в Visual Studio.

+0

Большое спасибо за вашу большую помощь. – user3070072

1

Я просто делаю в php/magento, попробуйте это решить.

$xml = simplexml_load_file("../app/etc/local.xml") or die("X");$host = $xml->xpath('global/resources/default_setup/connection/host');$host = $host[0][0];$usernm = $xml->xpath('global/resources/default_setup/connection/username');$usernm = $usernm[0][0];$pwd = $xml->xpath('global/resources/default_setup/connection/password');$pwd = $pwd[0][0];$db = $xml->xpath('global/resources/default_setup/connection/dbname');$db = $db[0][0];$link = mysql_connect($host, $usernm, $pwd); 
If (!$link) { die ('Could not connect: ' . mysql_error()); } 
mysql_select_db($db) or die ('Unable to select database'); 

$result = mysql_query("SELECT * FROM catalog_product_flat_1 Where shipping_price IS NULL AND type_id='simple'"); 
$noOfRecord = mysql_num_rows($result); 

я использовать XML-файл как Magento local.xml файл, который находится в Magento/приложение/и т.д./local.xml ..

+0

Ваш ответ выглядит совершенно не связанным с вопросом. Вопрос OP не имеет ничего общего с php, magento, mysql и другими материалами, упомянутыми в вашем ответе. Вы пропустили вопрос, чтобы ответить? –